aboutsummaryrefslogtreecommitdiffstats
path: root/src/pubkey/pkcs8.cpp
diff options
context:
space:
mode:
authorlloyd <[email protected]>2010-03-19 17:59:40 +0000
committerlloyd <[email protected]>2010-03-19 17:59:40 +0000
commitdab16b79c89e54e9551d30dcf54ca89432932dce (patch)
treefcd4ccce7e442006f8075f8c8a9b298aab5167b3 /src/pubkey/pkcs8.cpp
parent8fa0099ce0f2f488ca4c5046c6d019125d1d3b68 (diff)
Add a couple of new helper functions to BER_Decoder:
decode_and_check takes an expected value; if the decoded value does not match, a Decoding_Error with a specified string is thrown. Useful for checking embedded version codes. decode_octet_string_bigint is for decoding INTEGER values that are stored as OCTET STRINGs. Totally obnoxious and useless, but common especially in the ECC standards.
Diffstat (limited to 'src/pubkey/pkcs8.cpp')
-rw-r--r--src/pubkey/pkcs8.cpp7
1 files changed, 1 insertions, 6 deletions
diff --git a/src/pubkey/pkcs8.cpp b/src/pubkey/pkcs8.cpp
index 400fdbb48..35ff7f206 100644
--- a/src/pubkey/pkcs8.cpp
+++ b/src/pubkey/pkcs8.cpp
@@ -105,19 +105,14 @@ SecureVector<byte> PKCS8_decode(DataSource& source, const User_Interface& ui,
key = decryptor.read_all();
}
- u32bit version;
-
BER_Decoder(key)
.start_cons(SEQUENCE)
- .decode(version)
+ .decode_and_check<u32bit>(0, "Unknown PKCS #8 version number")
.decode(pk_alg_id)
.decode(key, OCTET_STRING)
.discard_remaining()
.end_cons();
- if(version != 0)
- throw Decoding_Error("PKCS #8: Unknown version number");
-
break;
}
catch(Decoding_Error)