Skip to content

Commit

Permalink
adapt to recent mirage-crypto API change
Browse files Browse the repository at this point in the history
  • Loading branch information
hannesm committed Apr 10, 2024
1 parent 93d2674 commit dd49771
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 11 deletions.
13 changes: 6 additions & 7 deletions lib/p12.ml
Original file line number Diff line number Diff line change
Expand Up @@ -315,17 +315,16 @@ let pkcs12_decrypt algo password data =
let key = pbes hash `Encryption password salt count key_len
and iv = pbes hash `Iv password salt count iv_len
in
let open Mirage_crypto in
let* data =
match algo with
| SHA_RC2_40_CBC _ | SHA_RC2_128_CBC _ ->
Ok (Rc2.decrypt_cbc ~effective:(key_len * 8) ~key ~iv data)
| SHA_RC4_40 _ | SHA_RC4_128 _ ->
let open Mirage_crypto.Cipher_stream in
let key = ARC4.of_secret key in
let { ARC4.message ; _ } = ARC4.decrypt ~key data in
Ok message
| SHA_3DES_CBC _ ->
let open Mirage_crypto.Cipher_block in
let key = DES.CBC.of_secret key in
Ok (DES.CBC.decrypt ~key ~iv data)
| _ -> Error (`Msg "encryption algorithm not supported")
Expand All @@ -352,13 +351,13 @@ let pkcs5_2_decrypt kdf enc password data =
| _ -> Error (`Msg "expected kdf being pbkdf2")
in
let key = Pbkdf.pbkdf2 ~prf ~password ~salt ~count ~dk_len in
let key = Mirage_crypto.Cipher_block.AES.CBC.of_secret key in
let msg = Mirage_crypto.Cipher_block.AES.CBC.decrypt ~key ~iv data in
let key = Mirage_crypto.AES.CBC.of_secret key in
let msg = Mirage_crypto.AES.CBC.decrypt ~key ~iv data in
Ok (unpad msg)

let pkcs5_2_encrypt (mac : [ `SHA1 | `SHA224 | `SHA256 | `SHA384 | `SHA512 ]) count algo password data =
let module Hash = (val (Digestif.module_of_hash' (mac :> Digestif.hash'))) in
let bs = Mirage_crypto.Cipher_block.AES.CBC.block_size in
let bs = Mirage_crypto.AES.CBC.block_size in
let iv = Mirage_crypto_rng.generate bs in
let enc, dk_len =
match algo with
Expand All @@ -368,10 +367,10 @@ let pkcs5_2_encrypt (mac : [ `SHA1 | `SHA224 | `SHA256 | `SHA384 | `SHA512 ]) co
in
let salt = Mirage_crypto_rng.generate Hash.digest_size in
let key = Pbkdf.pbkdf2 ~prf:(mac :> Digestif.hash') ~password ~salt ~count ~dk_len in
let key = Mirage_crypto.Cipher_block.AES.CBC.of_secret key in
let key = Mirage_crypto.AES.CBC.of_secret key in
let padded_data = pad bs data in
let enc_data =
Mirage_crypto.Cipher_block.AES.CBC.encrypt ~key ~iv padded_data
Mirage_crypto.AES.CBC.encrypt ~key ~iv padded_data
in
let kdf = Algorithm.PBKDF2 (salt, count, None, Algorithm.of_hmac mac) in
Algorithm.PBES2 (kdf, enc), enc_data
Expand Down
8 changes: 4 additions & 4 deletions x509.opam
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,9 @@ namely PKCS 1, PKCS 5, PKCS 7, PKCS 8, PKCS 9, PKCS 10, and PKCS 12.
"""

pin-depends: [
[ "mirage-crypto.dev" "git+https://github.com/mirage/mirage-crypto.git#918bef0ea7b7b71f02d27205a183ea5a709a7424" ]
[ "mirage-crypto-pk.dev" "git+https://github.com/mirage/mirage-crypto.git#918bef0ea7b7b71f02d27205a183ea5a709a7424" ]
[ "mirage-crypto-ec.dev" "git+https://github.com/mirage/mirage-crypto.git#918bef0ea7b7b71f02d27205a183ea5a709a7424" ]
[ "mirage-crypto-rng.dev" "git+https://github.com/mirage/mirage-crypto.git#918bef0ea7b7b71f02d27205a183ea5a709a7424" ]
[ "mirage-crypto.dev" "git+https://github.com/mirage/mirage-crypto.git#47127ec04403b18216696de5a8a637f7e88ca85e" ]
[ "mirage-crypto-pk.dev" "git+https://github.com/mirage/mirage-crypto.git#47127ec04403b18216696de5a8a637f7e88ca85e" ]
[ "mirage-crypto-ec.dev" "git+https://github.com/mirage/mirage-crypto.git#47127ec04403b18216696de5a8a637f7e88ca85e" ]
[ "mirage-crypto-rng.dev" "git+https://github.com/mirage/mirage-crypto.git#47127ec04403b18216696de5a8a637f7e88ca85e" ]
[ "pbkdf.dev" "git+https://github.com/dinosaure/ocaml-pbkdf.git#0ef32f89cac4091e74d1a0fa34cf417f9b7c70df" ]
]

0 comments on commit dd49771

Please sign in to comment.