mor get methods in certificate
This commit is contained in:
		@@ -242,14 +242,12 @@ namespace cryptoki {
 | 
			
		||||
  //----------------------------------------------------------------------------
 | 
			
		||||
  Object Session::create(const openssl::X509& cert) {
 | 
			
		||||
    AttributeList attrs;
 | 
			
		||||
    /*
 | 
			
		||||
    attrs.push_back(Attribute(CKA_CLASS)
 | 
			
		||||
                    .from<CK_OBJECT_CLASS>(CKO_CERTIFICATE));
 | 
			
		||||
    attrs.push_back(Attribute(CKA_CERTIFICATE_TYPE)
 | 
			
		||||
                    .from<CK_CERTIFICATE_TYPE>(CKC_X_509));
 | 
			
		||||
    attrs.push_back(Attribute(CKA_SUBJECT, derSubject));
 | 
			
		||||
    attrs.push_back(Attribute(CKA_VALUE, desValue));
 | 
			
		||||
        */
 | 
			
		||||
    attrs.push_back(Attribute(CKA_SUBJECT, cert.subjectDER()));
 | 
			
		||||
    attrs.push_back(Attribute(CKA_VALUE, cert.valueDER()));
 | 
			
		||||
    return create(attrs);
 | 
			
		||||
  }
 | 
			
		||||
  Object Session::create(const openssl::PrivateKey& key) {
 | 
			
		||||
 
 | 
			
		||||
@@ -338,6 +338,20 @@ namespace openssl {
 | 
			
		||||
        return std::string((char*)M_ASN1_STRING_data(cn),
 | 
			
		||||
                           M_ASN1_STRING_length(cn));
 | 
			
		||||
      }
 | 
			
		||||
      //! Check for basic constraints.
 | 
			
		||||
      /*! e.g. check for CA certificate:
 | 
			
		||||
          @code
 | 
			
		||||
          if (x509.basicConstraints() && x509.basicConstraints()->ca) [...]
 | 
			
		||||
          @endcode
 | 
			
		||||
          @return 0 if there are no basic constraints */
 | 
			
		||||
      BASIC_CONSTRAINTS* basicConstraints() {
 | 
			
		||||
        static BASIC_CONSTRAINTS* bc(0);
 | 
			
		||||
        if (!bc) {
 | 
			
		||||
          int pos(X509_get_ext_by_NID(_x509, NID_basic_constraints, -1));
 | 
			
		||||
          if (pos>=0) bc = X509V3_EXT_d2i(X509_get_ext(_x509, pos));
 | 
			
		||||
        }
 | 
			
		||||
        return bc;
 | 
			
		||||
      }
 | 
			
		||||
      //! Get organizational unit name.
 | 
			
		||||
      std::string organizationalUnitName() const {
 | 
			
		||||
        X509_NAME *name(X509_get_subject_name(_x509));
 | 
			
		||||
@@ -349,6 +363,16 @@ namespace openssl {
 | 
			
		||||
        return std::string((char*)M_ASN1_STRING_data(cn),
 | 
			
		||||
                           M_ASN1_STRING_length(cn));
 | 
			
		||||
      }
 | 
			
		||||
      //! Get key usage flags.
 | 
			
		||||
      std::string keyUsageFlags() const {
 | 
			
		||||
        int pos(X509_get_ext_by_NID(_x509, NID_key_usage, -1));
 | 
			
		||||
        if (pos>=0) {
 | 
			
		||||
          ASN1_BIT_STRING ku(d2i(X509_get_ext(_x509, pos)));
 | 
			
		||||
          return std::string((char*)M_ASN1_STRING_data(ku),
 | 
			
		||||
                             M_ASN1_STRING_lengthku));
 | 
			
		||||
        else
 | 
			
		||||
          return std::string(); //! @todo better throw exception?
 | 
			
		||||
      }
 | 
			
		||||
    private:
 | 
			
		||||
      ::X509* _x509;
 | 
			
		||||
  };
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user