@@ -51,18 +51,20 @@ Digest::~Digest() = default;
51
51
52
52
vector<unsigned char > Digest::addDigestInfo (vector<unsigned char > digest, string_view uri)
53
53
{
54
- vector<unsigned char > oid;
55
54
switch (toMethod (uri))
56
55
{
57
- case NID_sha1: oid = {0x30 , 0x21 , 0x30 , 0x09 , 0x06 , 0x05 , 0x2b , 0x0e , 0x03 , 0x02 , 0x1a , 0x05 , 0x00 , 0x04 , 0x14 }; break ;
58
- case NID_sha224: oid = {0x30 , 0x2d , 0x30 , 0x0d , 0x06 , 0x09 , 0x60 , 0x86 , 0x48 , 0x01 , 0x65 , 0x03 , 0x04 , 0x02 , 0x04 , 0x05 , 0x00 , 0x04 , 0x1c }; break ;
59
- case NID_sha256: oid = {0x30 , 0x31 , 0x30 , 0x0d , 0x06 , 0x09 , 0x60 , 0x86 , 0x48 , 0x01 , 0x65 , 0x03 , 0x04 , 0x02 , 0x01 , 0x05 , 0x00 , 0x04 , 0x20 }; break ;
60
- case NID_sha384: oid = {0x30 , 0x41 , 0x30 , 0x0d , 0x06 , 0x09 , 0x60 , 0x86 , 0x48 , 0x01 , 0x65 , 0x03 , 0x04 , 0x02 , 0x02 , 0x05 , 0x00 , 0x04 , 0x30 }; break ;
61
- case NID_sha512: oid = {0x30 , 0x51 , 0x30 , 0x0d , 0x06 , 0x09 , 0x60 , 0x86 , 0x48 , 0x01 , 0x65 , 0x03 , 0x04 , 0x02 , 0x03 , 0x05 , 0x00 , 0x04 , 0x40 }; break ;
56
+ case NID_sha1: digest.insert (digest.cbegin (),
57
+ {0x30 , 0x21 , 0x30 , 0x09 , 0x06 , 0x05 , 0x2b , 0x0e , 0x03 , 0x02 , 0x1a , 0x05 , 0x00 , 0x04 , 0x14 }); break ;
58
+ case NID_sha224: digest.insert (digest.cbegin (),
59
+ {0x30 , 0x2d , 0x30 , 0x0d , 0x06 , 0x09 , 0x60 , 0x86 , 0x48 , 0x01 , 0x65 , 0x03 , 0x04 , 0x02 , 0x04 , 0x05 , 0x00 , 0x04 , 0x1c }); break ;
60
+ case NID_sha256: digest.insert (digest.cbegin (),
61
+ {0x30 , 0x31 , 0x30 , 0x0d , 0x06 , 0x09 , 0x60 , 0x86 , 0x48 , 0x01 , 0x65 , 0x03 , 0x04 , 0x02 , 0x01 , 0x05 , 0x00 , 0x04 , 0x20 }); break ;
62
+ case NID_sha384: digest.insert (digest.begin (),
63
+ {0x30 , 0x41 , 0x30 , 0x0d , 0x06 , 0x09 , 0x60 , 0x86 , 0x48 , 0x01 , 0x65 , 0x03 , 0x04 , 0x02 , 0x02 , 0x05 , 0x00 , 0x04 , 0x30 }); break ;
64
+ case NID_sha512: digest.insert (digest.cbegin (),
65
+ {0x30 , 0x51 , 0x30 , 0x0d , 0x06 , 0x09 , 0x60 , 0x86 , 0x48 , 0x01 , 0x65 , 0x03 , 0x04 , 0x02 , 0x03 , 0x05 , 0x00 , 0x04 , 0x40 }); break ;
62
66
default : break ;
63
67
}
64
- if (!oid.empty ())
65
- digest.insert (digest.begin (), oid.begin (), oid.end ());
66
68
return digest;
67
69
}
68
70
@@ -74,7 +76,7 @@ vector<unsigned char> Digest::digestInfoDigest(const std::vector<unsigned char>
74
76
return {};
75
77
const ASN1_OCTET_STRING *value {};
76
78
X509_SIG_get0 (sig.get (), nullptr , &value);
77
- return { value->data , value->data + value->length };
79
+ return { value->data , std::next ( value->data , value->length ) };
78
80
}
79
81
80
82
string Digest::digestInfoUri (const std::vector<unsigned char > &digest)
@@ -141,7 +143,7 @@ int Digest::toMethod(string_view uri)
141
143
if (uri == URI_SHA3_384 || uri == URI_RSA_PSS_SHA3_384) return NID_sha3_384;
142
144
if (uri == URI_SHA3_512 || uri == URI_RSA_PSS_SHA3_512) return NID_sha3_512;
143
145
#endif
144
- THROW (" Digest method URI '%.*s' is not supported." , uri.size (), uri.data ());
146
+ THROW (" Digest method URI '%.*s' is not supported." , int ( uri.size () ), uri.data ());
145
147
}
146
148
147
149
string Digest::toRsaUri (const string &uri)
0 commit comments