diff --git a/README.md b/README.md index 6a4d8da..4e2d9a1 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ import java.security.Provider; public class InstallBouncyCastle { private static final Provider PROVIDER; - + public static void installProvider() throws Exception { if (PROVIDER != null) return; PROVIDER = new BouncyCastleProvider(); @@ -66,4 +66,4 @@ Go ahead, file issues, make pull requests. There is an automated build process Currently setup to build in the NetBeans IDE. Automated checking is performed using the [COSE Examples](https://github.com/cose-wg/Examples) as part of the suite. -The examples are located by the following method. 1) If 'c:\\Projects\\cose\\" exists then it uses that as the directory to look in for the examples. 2) It expects that the examples are in the same directory as the pom.xml file. +The examples are imported into `src/test/resources/Examples`. \ No newline at end of file diff --git a/pom.xml b/pom.xml index 16dd923..ceeacda 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.augustcellars.cose cose-java - 1.1.0 + 1.1.1-SNAPSHOT com.augustcellars.cose:cose-java A Java implementation that supports the COSE secure message specification. @@ -38,7 +38,7 @@ https://oss.sonatype.org/content/repositories/snapshots - + @@ -139,7 +139,7 @@ - + org.apache.maven.plugins maven-javadoc-plugin @@ -157,7 +157,7 @@ - + org.apache.maven.plugins maven-source-plugin @@ -183,7 +183,7 @@ true - + @@ -192,7 +192,7 @@ UTF-8 - + @@ -203,4 +203,4 @@ - + diff --git a/src/main/java/COSE/CryptoContext.java b/src/main/java/COSE/CryptoContext.java new file mode 100644 index 0000000..3bdc64f --- /dev/null +++ b/src/main/java/COSE/CryptoContext.java @@ -0,0 +1,25 @@ +package COSE; + + +import java.security.Provider; + +/** + * Specify which JCA Provider to use for signing and verifying messages + */ +public class CryptoContext { + + private Provider provider; + + public CryptoContext(Provider provider) { + this.provider = provider; + } + + public Provider getProvider() { + return provider; + } + + public void setProvider(Provider provider) { + this.provider = provider; + } + +} diff --git a/src/main/java/COSE/Encrypt0Message.java b/src/main/java/COSE/Encrypt0Message.java index 34aac7a..af654cc 100644 --- a/src/main/java/COSE/Encrypt0Message.java +++ b/src/main/java/COSE/Encrypt0Message.java @@ -24,11 +24,11 @@ public class Encrypt0Message extends EncryptCommon { public Encrypt0Message() { this(true, true); } - + /** * Create a Encrypt0Message object. This object corresponds to the encrypt message format in COSE. - * + * * @param emitTag is the leading CBOR tag emitted * @param emitContent is the content emitted */ @@ -38,11 +38,18 @@ public Encrypt0Message(boolean emitTag, boolean emitContent) { this.emitTag = emitTag; this.emitContent = emitContent; } - + + /** + * Gets the {@link CryptoContext} to set a different JCA Provider + */ + public CryptoContext getCryptoContext() { + return cryptoContext; + } + @Override public void DecodeFromCBORObject(CBORObject obj) throws CoseException { if (obj.size() != 3) throw new CoseException("Invalid Encrypt0 structure"); - + if (obj.get(0).getType() == CBORType.ByteString) { if (obj.get(0).GetByteString().length == 0) { rgbProtected = new byte[0]; @@ -53,43 +60,43 @@ public void DecodeFromCBORObject(CBORObject obj) throws CoseException { objProtected = CBORObject.DecodeFromBytes(rgbProtected); if (objProtected.getType() != CBORType.Map) throw new CoseException("Invalid Encrypt0 structure"); } - + } else throw new CoseException("Invalid Encrypt0 structure"); - + if(obj.get(1).getType() == CBORType.Map) objUnprotected = obj.get(1); else throw new CoseException("Invalid Encrypt0 structure"); - + if (obj.get(2).getType() == CBORType.ByteString) rgbEncrypt = obj.get(2).GetByteString(); else if (!obj.get(2).isNull()) throw new CoseException("Invalid Encrypt0 structure"); - - + + } - + /** - * Internal function used to construct the CBORObject + * Internal function used to construct the CBORObject * @return the constructed CBORObject * @throws CoseException if the content has not yet been encrypted */ @Override protected CBORObject EncodeCBORObject() throws CoseException { if (rgbEncrypt == null) throw new CoseException("Encrypt function not called"); - + CBORObject obj = CBORObject.NewArray(); if (objProtected.size() > 0) obj.Add(objProtected.EncodeToBytes()); else obj.Add(CBORObject.FromObject(new byte[0])); - + obj.Add(objUnprotected); - + if (emitContent) obj.Add(rgbEncrypt); else obj.Add(CBORObject.Null); - + return obj; } - + /** * Decrypt the message using the passed in key. - * + * * @param rgbKey key for decryption * @return the decrypted content * @throws CoseException - Error during decryption @@ -97,10 +104,10 @@ protected CBORObject EncodeCBORObject() throws CoseException { public byte[] decrypt(byte[] rgbKey) throws CoseException { return super.decryptWithKey(rgbKey); } - + /** * Encrypt the message using the passed in key. - * + * * @param rgbKey key used for encryption * @throws CoseException - Error during decryption * @throws IllegalStateException - Error during decryption diff --git a/src/main/java/COSE/EncryptCommon.java b/src/main/java/COSE/EncryptCommon.java index 277d980..223d93a 100644 --- a/src/main/java/COSE/EncryptCommon.java +++ b/src/main/java/COSE/EncryptCommon.java @@ -20,32 +20,35 @@ * @author jimsch */ public abstract class EncryptCommon extends Message { + + protected CryptoContext cryptoContext = new CryptoContext(null); + private final String AES_SPEC = "AES"; - + private final String AES_CCM_SPEC = AES_SPEC + "/CCM/NoPadding"; private final int AES_CCM_16_IV_LENGTH = 13; private final int AES_CCM_64_IV_LENGTH = 7; - + private final String AES_GCM_SPEC = AES_SPEC + "/GCM/NoPadding"; private final int AES_GCM_IV_LENGTH = 96; - + protected String context; protected byte[] rgbEncrypt; SecureRandom random = new SecureRandom(); - + protected byte[] decryptWithKey(byte[] rgbKey) throws CoseException { CBORObject algX = findAttribute(HeaderKeys.Algorithm); AlgorithmID alg = AlgorithmID.FromCBOR(algX); - + if (rgbEncrypt == null) throw new CoseException("No Encrypted Content Specified"); - + switch (alg) { case AES_GCM_128: case AES_GCM_192: case AES_GCM_256: AES_GCM_Decrypt(alg, rgbKey); break; - + case AES_CCM_16_64_128: case AES_CCM_16_64_256: case AES_CCM_64_64_128: @@ -56,18 +59,18 @@ protected byte[] decryptWithKey(byte[] rgbKey) throws CoseException { case AES_CCM_64_128_256: AES_CCM_Decrypt(alg, rgbKey); break; - + default: throw new CoseException("Unsupported Algorithm Specified"); } - + return rgbContent; } - + void encryptWithKey(byte[] rgbKey) throws CoseException, IllegalStateException { CBORObject algX = findAttribute(HeaderKeys.Algorithm); AlgorithmID alg = AlgorithmID.FromCBOR(algX); - + if (rgbContent == null) throw new CoseException("No Content Specified"); switch (alg) { @@ -91,10 +94,10 @@ void encryptWithKey(byte[] rgbKey) throws CoseException, IllegalStateException { default: throw new CoseException("Unsupported Algorithm Specified"); } - + ProcessCounterSignatures(); } - + private int getAES_CCM_IVSize(AlgorithmID alg) throws CoseException { switch (alg) { case AES_CCM_16_64_128: @@ -110,7 +113,7 @@ private int getAES_CCM_IVSize(AlgorithmID alg) throws CoseException { } throw new CoseException("Unsupported algorithm: " + alg); } - + private void AES_CCM_Decrypt(AlgorithmID alg, byte[] rgbKey) throws CoseException, IllegalStateException { // validate key if (rgbKey.length != alg.getKeySize()/8) { @@ -129,14 +132,16 @@ private void AES_CCM_Decrypt(AlgorithmID alg, byte[] rgbKey) throws CoseExceptio if (iv.GetByteString().length != ivLen) { throw new CoseException("IV size is incorrect"); } - + try { - Cipher cipher = Cipher.getInstance(AES_CCM_SPEC); + Cipher cipher = cryptoContext.getProvider() != null ? + Cipher.getInstance(AES_CCM_SPEC, cryptoContext.getProvider()) : + Cipher.getInstance(AES_CCM_SPEC); cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(rgbKey, AES_SPEC), new GCMParameterSpec(alg.getTagSize(), iv.GetByteString())); cipher.updateAAD(getAADBytes()); - + rgbContent = new byte[cipher.getOutputSize(rgbEncrypt.length)]; ByteBuffer input = ByteBuffer.wrap(rgbEncrypt); ByteBuffer output = ByteBuffer.wrap(rgbContent); @@ -153,14 +158,14 @@ private void AES_CCM_Decrypt(AlgorithmID alg, byte[] rgbKey) throws CoseExceptio throw new CoseException("Decryption failure", ex); } } - - + + private void AES_CCM_Encrypt(AlgorithmID alg, byte[] rgbKey) throws CoseException, IllegalStateException { // validate key if (rgbKey.length != alg.getKeySize()/8) { throw new CoseException("Key Size is incorrect"); } - + // obtain and validate iv CBORObject iv = findAttribute(HeaderKeys.IV); int ivLen = getAES_CCM_IVSize(alg); @@ -177,9 +182,11 @@ private void AES_CCM_Encrypt(AlgorithmID alg, byte[] rgbKey) throws CoseExceptio throw new CoseException("IV is too long."); } } - + try { - Cipher cipher = Cipher.getInstance(AES_CCM_SPEC); + Cipher cipher = cryptoContext.getProvider() != null ? + Cipher.getInstance(AES_CCM_SPEC, cryptoContext.getProvider()) : + Cipher.getInstance(AES_CCM_SPEC); cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(rgbKey, AES_SPEC), new GCMParameterSpec(alg.getTagSize(), iv.GetByteString())); @@ -217,8 +224,9 @@ private void AES_GCM_Decrypt(AlgorithmID alg, byte[] rgbKey) throws CoseExceptio try { // create and prepare cipher - Cipher cipher; - cipher = Cipher.getInstance(AES_GCM_SPEC); + Cipher cipher = cryptoContext.getProvider() != null ? + Cipher.getInstance(AES_GCM_SPEC, cryptoContext.getProvider()) : + Cipher.getInstance(AES_GCM_SPEC); cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(rgbKey, "AES"), new GCMParameterSpec(alg.getTagSize(), iv.GetByteString())); @@ -249,7 +257,7 @@ private void AES_GCM_Encrypt(AlgorithmID alg, byte[] rgbKey) throws CoseExceptio if (rgbKey.length != alg.getKeySize()/8) { throw new CoseException("Key Size is incorrect"); } - + // obtain and validate iv CBORObject iv = findAttribute(HeaderKeys.IV); if (iv == null) { @@ -266,9 +274,11 @@ private void AES_GCM_Encrypt(AlgorithmID alg, byte[] rgbKey) throws CoseExceptio throw new CoseException("IV size is incorrect"); } } - + try { - Cipher cipher = Cipher.getInstance(AES_GCM_SPEC); + Cipher cipher = cryptoContext.getProvider() != null ? + Cipher.getInstance(AES_GCM_SPEC, cryptoContext.getProvider()) : + Cipher.getInstance(AES_GCM_SPEC); cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(rgbKey, AES_SPEC), new GCMParameterSpec(alg.getTagSize(), iv.GetByteString())); @@ -284,10 +294,10 @@ private void AES_GCM_Encrypt(AlgorithmID alg, byte[] rgbKey) throws CoseExceptio throw new CoseException("Encryption failure", ex); } } - + private byte[] getAADBytes() { CBORObject obj = CBORObject.NewArray(); - + obj.Add(context); if (objProtected.size() == 0) rgbProtected = new byte[0]; else rgbProtected = objProtected.EncodeToBytes(); @@ -295,23 +305,23 @@ private byte[] getAADBytes() { obj.Add(CBORObject.FromObject(externalData)); return obj.EncodeToBytes(); } - + /** * Used to obtain the encrypted content for the cases where detached content * is requested. - * + * * @return bytes of the encrypted content * @throws CoseException if content has not been encrypted */ public byte[] getEncryptedContent() throws CoseException{ if (rgbEncrypt == null) throw new CoseException("No Encrypted Content Specified"); - + return rgbEncrypt; } - + /** * Set the encrypted content for detached content cases. - * + * * @param rgb encrypted content to be used */ public void setEncryptedContent(byte[] rgb) { @@ -333,7 +343,7 @@ protected void ProcessCounterSignatures() throws CoseException { addAttribute(HeaderKeys.CounterSignature, list, Attribute.UNPROTECTED); } } - + if (counterSign1 != null) { counterSign1.sign(rgbProtected, rgbEncrypt); addAttribute(HeaderKeys.CounterSignature0, counterSign1.EncodeToCBORObject(), Attribute.UNPROTECTED); @@ -343,7 +353,7 @@ protected void ProcessCounterSignatures() throws CoseException { public boolean validate(CounterSign1 countersignature) throws CoseException { return countersignature.validate(rgbProtected, rgbEncrypt); } - + public boolean validate(CounterSign countersignature) throws CoseException { return countersignature.validate(rgbProtected, rgbEncrypt); } diff --git a/src/main/java/COSE/MacCommon.java b/src/main/java/COSE/MacCommon.java index 7b9ff2c..8fb8651 100644 --- a/src/main/java/COSE/MacCommon.java +++ b/src/main/java/COSE/MacCommon.java @@ -24,10 +24,13 @@ */ public abstract class MacCommon extends Message { + + protected CryptoContext cryptoContext = new CryptoContext(null); + protected byte[] rgbTag; protected String strContext; protected SecureRandom random = new SecureRandom(); - + protected MacCommon() { super(); } @@ -37,7 +40,7 @@ protected void CreateWithKey(byte[] rgbKey) throws CoseException { AlgorithmID alg = AlgorithmID.FromCBOR(algX); if (rgbContent == null) throw new CoseException("No Content Specified"); - + switch (alg) { case HMAC_SHA_256_64: case HMAC_SHA_256: @@ -45,7 +48,7 @@ protected void CreateWithKey(byte[] rgbKey) throws CoseException { case HMAC_SHA_512: rgbTag = HMAC(alg, rgbKey); break; - + case AES_CBC_MAC_128_64: case AES_CBC_MAC_256_64: case AES_CBC_MAC_128_128: @@ -56,18 +59,18 @@ protected void CreateWithKey(byte[] rgbKey) throws CoseException { default: throw new CoseException("Unsupported MAC Algorithm"); } - + ProcessCounterSignatures(); } - + protected boolean Validate(byte[] rgbKey) throws CoseException { boolean f; int i; byte[] rgbTest; - + CBORObject algX = findAttribute(CBORObject.FromObject(1)); //HeaderKeys.Algorithm); AlgorithmID alg = AlgorithmID.FromCBOR(algX); - + switch (alg) { case HMAC_SHA_256_64: case HMAC_SHA_256: @@ -75,18 +78,18 @@ protected boolean Validate(byte[] rgbKey) throws CoseException { case HMAC_SHA_512: rgbTest = HMAC(alg, rgbKey); break; - + case AES_CBC_MAC_128_64: case AES_CBC_MAC_256_64: case AES_CBC_MAC_128_128: case AES_CBC_MAC_256_128: rgbTest = AES_CBC_MAC(alg, rgbKey); break; - + default: throw new CoseException("Unsupported MAC Algorithm"); } - + if (rgbTest.length != rgbTag.length) return false; f = true; for (i=0; i spki = ASN1.DecodeSubjectPublicKeyInfo(pubKey.getEncoded()); ArrayList alg = spki.get(0).list; @@ -84,12 +94,12 @@ public OneKey(PublicKey pubKey, PrivateKey privKey) throws CoseException { byte[] keyData = (byte[]) spki.get(1).value; if (keyData[1] == 2 || keyData[1] == 3) { keyMap.Add(KeyKeys.EC2_X.AsCBOR(), Arrays.copyOfRange(keyData, 2, keyData.length)); - keyMap.Add(KeyKeys.EC2_Y.AsCBOR(), keyData[1] == 2 ? false : true); + keyMap.Add(KeyKeys.EC2_Y.AsCBOR(), keyData[1] == 2 ? false : true); } else if (keyData[1] == 4) { int keyLength = (keyData.length - 2)/2; keyMap.Add(KeyKeys.EC2_X.AsCBOR(), Arrays.copyOfRange(keyData, 2, 2+keyLength)); - keyMap.Add(KeyKeys.EC2_Y.AsCBOR(), Arrays.copyOfRange(keyData, 2+keyLength, keyData.length)); + keyMap.Add(KeyKeys.EC2_Y.AsCBOR(), Arrays.copyOfRange(keyData, 2+keyLength, keyData.length)); } else throw new CoseException("Invalid key data"); } @@ -136,10 +146,10 @@ else if (Arrays.equals(oid, ASN1.Oid_Ed448)) else { throw new CoseException("Unsupported Algorithm"); } - + this.publicKey = pubKey; } - + if (privKey != null) { ArrayList pkl = ASN1.DecodePKCS8Structure(privKey.getEncoded()); if (pkl.get(0).tag != 2) throw new CoseException("Invalid PKCS8 structure"); @@ -220,32 +230,32 @@ else if (Arrays.equals(oid, ASN1.Oid_Ed448)) else { throw new CoseException("Unsupported Algorithm"); } - - this.privateKey = privKey; + + this.privateKey = privKey; } } - + public void add(KeyKeys keyValue, CBORObject value) { keyMap.Add(keyValue.AsCBOR(), value); } - + public void add(CBORObject keyValue, CBORObject value) { keyMap.Add(keyValue, value); } - + public CBORObject get(KeyKeys keyValue) { return keyMap.get(keyValue.AsCBOR()); } - + public CBORObject get(CBORObject keyValue) throws CoseException { if ((keyValue.getType() != CBORType.Integer) && (keyValue.getType() != CBORType.TextString)) throw new CoseException("keyValue type is incorrect"); return keyMap.get(keyValue); } - + /** * Compares the key's assigned algorithm with the provided value, indicating if the values are the * same. - * + * * @param algorithmId * the algorithm to compare or {@code null} to check for no assignment. * @return {@code true} if the current key has the provided algorithm assigned, or {@code false} @@ -267,7 +277,7 @@ public boolean HasAlgorithmID(AlgorithmID algorithmId) { /** * Compares the key's assigned identifier with the provided value, indicating if the values are * the same. - * + * * @param id * the identifier to compare or {@code null} to check for no assignment. * @return {@code true} if the current key has the provided identifier assigned, or {@code false} @@ -278,7 +288,7 @@ public boolean HasKeyID(String id) { byte[] idB = StandardCharsets.UTF_8.encode(id).array(); return HasKeyID(idB); } - + public boolean HasKeyID(byte[] id) { CBORObject thatObj = (id == null) ? null : CBORObject.FromObject(id); @@ -288,14 +298,14 @@ public boolean HasKeyID(byte[] id) result = (thisObj == null); } else { result = thatObj.equals(thisObj); - } - return result; + } + return result; } /** * Compares the key's assigned key type with the provided value, indicating if the values are the * same. - * + * * @param keyTypeObj * the key type to compare or {@code null} to check for no assignment. * @return {@code true} if the current key has the provided identifier assigned, or {@code false} @@ -312,11 +322,11 @@ public boolean HasKeyType(CBORObject keyTypeObj) { } return result; } - + /** * Compares the key's assigned key operations with the provided value, indicating if the provided * value was found in the key operation values assigned to the key. - * + * * @param that * the integer operation value to attempt to find in the values provided by the key or * {@code null} to check for no assignment. @@ -348,11 +358,11 @@ public boolean HasKeyOp(Integer that) { private void CheckKeyState() throws CoseException { CBORObject val; - + // Must have a key type val = OneKey.this.get(KeyKeys.KeyType); if ((val == null) || (val.getType() != CBORType.Integer)) throw new CoseException("Missing or incorrect key type field"); - + if (val.equals(KeyKeys.KeyType_Octet)) { val = OneKey.this.get(KeyKeys.Octet_K); if ((val== null) || (val.getType() != CBORType.ByteString)) throw new CoseException("Malformed key structure"); @@ -368,7 +378,7 @@ else if (val.equals(KeyKeys.KeyType_RSA)) { } else throw new CoseException("Unsupported key type"); } - + private void CheckECKey() throws CoseException { // ECParameterSpec params = null; // new ECDomainParameters(curve.getCurve(), curve.getG(), curve.getN(), curve.getH()); boolean needPublic = false; @@ -398,8 +408,10 @@ else if (cn == KeyKeys.EC2_P521) { try { byte[] privateBytes = ASN1.EncodeEcPrivateKey(oid, val.GetByteString(), null); byte[] pkcs8 = ASN1.EncodePKCS8(ASN1.AlgorithmIdentifier(ASN1.oid_ecPublicKey, oid), privateBytes, null); - - KeyFactory fact = KeyFactory.getInstance("EC"); + + KeyFactory fact = cryptoContext.getProvider() != null ? + KeyFactory.getInstance("EC", cryptoContext.getProvider()) : + KeyFactory.getInstance("EC"); KeySpec keyspec = new PKCS8EncodedKeySpec(pkcs8); privateKey = fact.generatePrivate(keyspec); @@ -445,17 +457,20 @@ else if (cn == KeyKeys.EC2_P521) { rgbKey[0] = (byte) (2 + (this.get(KeyKeys.EC2_Y).AsBoolean() ? 1 : 0)); } else { - rgbKey = new byte[X.length*2+1]; - System.arraycopy(X, 0,rgbKey, 1, X.length); byte[] Y = this.get(KeyKeys.EC2_Y).GetByteString(); - System.arraycopy(Y, 0, rgbKey, 1+X.length, X.length); + rgbKey = new byte[X.length+Y.length+1]; + System.arraycopy(X, 0, rgbKey, 1, X.length); + System.arraycopy(Y, 0, rgbKey, 1 + X.length, Y.length); rgbKey[0] = 4; } - spki = ASN1.EncodeSubjectPublicKeyInfo(ASN1.AlgorithmIdentifier(ASN1.oid_ecPublicKey, oid), rgbKey); + + spki = ASN1.EncodeSubjectPublicKeyInfo(ASN1.AlgorithmIdentifier(ASN1.oid_ecPublicKey, oid), rgbKey); } - - KeyFactory fact = KeyFactory.getInstance("EC"/*, "BC"*/); + + KeyFactory fact = cryptoContext.getProvider() != null ? + KeyFactory.getInstance("EC", cryptoContext.getProvider()) : + KeyFactory.getInstance("EC"); KeySpec keyspec = new X509EncodedKeySpec(spki); publicKey = fact.generatePublic(keyspec); } @@ -470,7 +485,7 @@ else if (cn == KeyKeys.EC2_P521) { throw new CoseException("BC not found"); } */ -/* +/* X9ECParameters curve = GetCurve(); ECDomainParameters params = new ECDomainParameters(curve.getCurve(), curve.getG(), curve.getN(), curve.getH()); boolean needPublic = false; @@ -515,11 +530,11 @@ else if (cn == KeyKeys.EC2_P521) { public ECGenParameterSpec GetCurve2() throws CoseException { if (OneKey.this.get(KeyKeys.KeyType) != KeyKeys.KeyType_EC2) throw new CoseException("Not an EC2 key"); CBORObject cnCurve = OneKey.this.get(KeyKeys.EC2_Curve); - + if (cnCurve == KeyKeys.EC2_P256) return new ECGenParameterSpec("secp256r1"); if (cnCurve == KeyKeys.EC2_P384) return new ECGenParameterSpec("secp384r1"); if (cnCurve == KeyKeys.EC2_P521) return new ECGenParameterSpec("secp521r1"); - throw new CoseException("Unsupported curve " + cnCurve); + throw new CoseException("Unsupported curve " + cnCurve); } static public OneKey generateKey(AlgorithmID algorithm) throws CoseException { @@ -537,22 +552,37 @@ static public OneKey generateKey(AlgorithmID algorithm) throws CoseException { * @throws CoseException */ static public OneKey generateKey(AlgorithmID algorithm, String parameters) throws CoseException { + return generateKey(algorithm, parameters, null); + } + + /** + * Generate a random key pair based on the given algorithm. + * Some algorithm can take a parameter. For example, the RSA_PSS family of algorithm + * can take the RSA key size as a parameter. + * + * @param algorithm the algorithm to generate a key pair for + * @param parameters optional parameters to the key pair generator + * @param provider JCA provider to use + * @return the generated Key Pair + * @throws CoseException + */ + static public OneKey generateKey(AlgorithmID algorithm, String parameters, Provider provider) throws CoseException { OneKey returnThis; switch(algorithm) { case ECDSA_256: - returnThis = generateECDSAKey("P-256", KeyKeys.EC2_P256); + returnThis = generateECDSAKey("P-256", KeyKeys.EC2_P256, provider); break; - + case ECDSA_384: - returnThis = generateECDSAKey("P-384", KeyKeys.EC2_P384); + returnThis = generateECDSAKey("P-384", KeyKeys.EC2_P384, provider); break; - + case ECDSA_512: - returnThis = generateECDSAKey("P-521", KeyKeys.EC2_P521); + returnThis = generateECDSAKey("P-521", KeyKeys.EC2_P521, provider); break; - + case EDDSA: - returnThis = generateOkpKey("Ed25519", KeyKeys.OKP_Ed25519); + returnThis = generateOkpKey("Ed25519", KeyKeys.OKP_Ed25519, provider); break; case RSA_PSS_256: @@ -564,63 +594,67 @@ static public OneKey generateKey(AlgorithmID algorithm, String parameters) throw keySize = Integer.parseInt(parameters); } catch (NumberFormatException ignored) {} } - returnThis = generateRSAKey(keySize); + returnThis = generateRSAKey(keySize, provider); break; - + default: throw new CoseException("Unknown algorithm"); } - + returnThis.add(KeyKeys.Algorithm, algorithm.AsCBOR()); return returnThis; } - + static public OneKey generateKey(CBORObject curve) throws CoseException { + return generateKey(curve, null); + } + + static public OneKey generateKey(CBORObject curve, Provider provider) throws CoseException { String curveName; OneKey returnThis; - + switch (curve.AsInt32()) { case 1: curveName = "P-256"; - returnThis = generateECDHKey(curveName, curve); + returnThis = generateECDHKey(curveName, curve, provider); return returnThis; case 2: curveName = "P-384"; - returnThis = generateECDHKey(curveName, curve); + returnThis = generateECDHKey(curveName, curve, provider); return returnThis; - + case 3: curveName = "P-521"; - returnThis = generateECDHKey(curveName, curve); + returnThis = generateECDHKey(curveName, curve, provider); return returnThis; - + case 6: curveName = "Ed25519"; - return generateOkpKey(curveName, curve); - + return generateOkpKey(curveName, curve, provider); + case 7: curveName = "Ed448"; - return generateOkpKey(curveName, curve); - + return generateOkpKey(curveName, curve, provider); + case 4: curveName = "X25519"; - return generateOkpKey(curveName, curve); - + return generateOkpKey(curveName, curve, provider); + case 5: curveName = "X448"; - return generateOkpKey(curveName, curve); + return generateOkpKey(curveName, curve, provider); default: throw new CoseException("Unknown curve"); } } - - static private OneKey generateECDHKey(String curveName, CBORObject curve) throws CoseException { + + static private OneKey generateECDHKey(String curveName, CBORObject curve, Provider provider) throws CoseException { try { - + int curveSize; - + switch (curveName) { case "P-256": curveName = "secp256r1"; @@ -636,19 +670,21 @@ static private OneKey generateECDHKey(String curveName, CBORObject curve) throws curveName = "secp521r1"; curveSize = 521; break; - + default: throw new CoseException("Internal Error"); } ECGenParameterSpec paramSpec = new ECGenParameterSpec(curveName); - KeyPairGenerator gen = KeyPairGenerator.getInstance("EC"); + KeyPairGenerator gen = provider != null ? + KeyPairGenerator.getInstance("EC", provider) : + KeyPairGenerator.getInstance("EC"); gen.initialize(paramSpec); - + KeyPair keyPair = gen.genKeyPair(); - + ECPoint pubPoint = ((ECPublicKey) keyPair.getPublic()).getW(); - + byte[] rgbX = ArrayFromBigNum(pubPoint.getAffineX(), curveSize); byte[] rgbY = ArrayFromBigNum(pubPoint.getAffineY(), curveSize); byte[] rgbD = ArrayFromBigNum(((ECPrivateKey) keyPair.getPrivate()).getS(), curveSize); @@ -662,7 +698,7 @@ static private OneKey generateECDHKey(String curveName, CBORObject curve) throws key.add(KeyKeys.EC2_D, CBORObject.FromObject(rgbD)); key.publicKey = keyPair.getPublic(); key.privateKey = keyPair.getPrivate(); - + return key; } @@ -673,7 +709,7 @@ static private OneKey generateECDHKey(String curveName, CBORObject curve) throws throw new CoseException("THe curve is not supported", e); } } - + static private byte[] ArrayFromBigNum(BigInteger n, int curveSize) { byte[] rgb = new byte[(curveSize+7)/8]; byte[] rgb2 = n.toByteArray(); @@ -686,12 +722,12 @@ static private byte[] ArrayFromBigNum(BigInteger n, int curveSize) { } return rgb; } - - static private OneKey generateECDSAKey(String curveName, CBORObject curve) throws CoseException { + + static private OneKey generateECDSAKey(String curveName, CBORObject curve, Provider provider) throws CoseException { try { - + int curveSize; - + switch (curveName) { case "P-256": curveName = "secp256r1"; @@ -707,19 +743,21 @@ static private OneKey generateECDSAKey(String curveName, CBORObject curve) throw curveName = "secp521r1"; curveSize = 521; break; - + default: throw new CoseException("Internal Error"); } ECGenParameterSpec paramSpec = new ECGenParameterSpec(curveName); - KeyPairGenerator gen = KeyPairGenerator.getInstance("EC"); + KeyPairGenerator gen = provider != null ? + KeyPairGenerator.getInstance("EC", provider) : + KeyPairGenerator.getInstance("EC"); gen.initialize(paramSpec); - + KeyPair keyPair = gen.genKeyPair(); - + ECPoint pubPoint = ((ECPublicKey) keyPair.getPublic()).getW(); - + byte[] rgbX = ArrayFromBigNum(pubPoint.getAffineX(), curveSize); byte[] rgbY = ArrayFromBigNum(pubPoint.getAffineY(), curveSize); byte[] rgbD = ArrayFromBigNum(((ECPrivateKey) keyPair.getPrivate()).getS(), curveSize); @@ -733,7 +771,7 @@ static private OneKey generateECDSAKey(String curveName, CBORObject curve) throw key.add(KeyKeys.EC2_D, CBORObject.FromObject(rgbD)); key.publicKey = keyPair.getPublic(); key.privateKey = keyPair.getPrivate(); - + return key; } @@ -744,12 +782,12 @@ static private OneKey generateECDSAKey(String curveName, CBORObject curve) throw throw new CoseException("The curve is not supported", e); } } - + /** - * Create a OneKey object with only the public fields. Filters out the + * Create a OneKey object with only the public fields. Filters out the * private key fields but leaves all positive number labels and text labels * along with negative number labels that are public fields. - * + * * @return public version of the key */ public OneKey PublicKey() @@ -775,9 +813,9 @@ else if (val.equals(KeyKeys.KeyType_RSA)) { else { return null; } - + // Allow them to use the same underlying public key object - + newKey.publicKey = publicKey; for (CBORObject obj : keyMap.getKeys()) { @@ -793,30 +831,30 @@ else if (obj.getType() == CBORType.TextString) { } return newKey; } - + /** * Encode to a byte string - * + * * @return encoded object as bytes. */ public byte[] EncodeToBytes() { return keyMap.EncodeToBytes(); } - + /** * Return the key as a CBOR object - * + * * @return The key */ public CBORObject AsCBOR() { return keyMap; } - + /** * Return a java.security.PublicKey that is the same as the OneKey key - * + * * @return the key * @throws CoseException If there is a conversion error */ @@ -824,10 +862,10 @@ public PublicKey AsPublicKey() throws CoseException { return publicKey; } - + /** * Return a java.security.PrivateKey that is the same as the OneKey key - * + * * @return the key * @throws CoseException if there is a conversion error */ @@ -835,23 +873,23 @@ public PrivateKey AsPrivateKey() throws CoseException { return privateKey; } - + private Object UserData; - + /** * Return the user data field. - * + * * The user data object allows for an application to associate a piece of arbitrary - * data with a key and retrieve it later. + * data with a key and retrieve it later. * @return the user data object */ public Object getUserData() { return UserData; } - + /** * Set the user data field. - * + * * The user data field allows for an application to associate a piece of arbitrary * data with a key and retrieve it later. * @param newData Data field to be saved. @@ -893,11 +931,13 @@ else if (cn == KeyKeys.OKP_X448) { if (val != null) { if (val.getType() != CBORType.ByteString) throw new CoseException("Malformed key structure"); try { - + byte[] privateKeyBytes = ASN1.EncodeOctetString(val.GetByteString()); byte[] pkcs8 = ASN1.EncodePKCS8(ASN1.AlgorithmIdentifier(oid, null), privateKeyBytes, null); - - KeyFactory fact = KeyFactory.getInstance(algName, "EdDSA"); + + KeyFactory fact = cryptoContext.getProvider() != null ? + KeyFactory.getInstance(algName, cryptoContext.getProvider()) : + KeyFactory.getInstance(algName, "EdDSA"); KeySpec keyspec = new PKCS8EncodedKeySpec(pkcs8); privateKey = fact.generatePrivate(keyspec); @@ -929,11 +969,13 @@ else if (cn == KeyKeys.OKP_X448) { if (spki == null) { byte[] rgbKey = this.get(KeyKeys.OKP_X).GetByteString(); - - spki = ASN1.EncodeSubjectPublicKeyInfo(ASN1.AlgorithmIdentifier(oid, null), rgbKey); + + spki = ASN1.EncodeSubjectPublicKeyInfo(ASN1.AlgorithmIdentifier(oid, null), rgbKey); } - - KeyFactory fact = KeyFactory.getInstance("EdDSA", "EdDSA"); + + KeyFactory fact = cryptoContext.getProvider() != null ? + KeyFactory.getInstance("EdDSA", cryptoContext.getProvider()) : + KeyFactory.getInstance("EdDSA", "EdDSA"); KeySpec keyspec = new X509EncodedKeySpec(spki); publicKey = fact.generatePublic(keyspec); } @@ -944,14 +986,14 @@ else if (cn == KeyKeys.OKP_X448) { throw new CoseException("Internal error on SPKI", e); } } - - static private OneKey generateOkpKey(String curveName, CBORObject curve) throws CoseException { - try { + + static private OneKey generateOkpKey(String curveName, CBORObject curve, Provider provider) throws CoseException { + try { switch (curveName) { case "Ed25519": - + break; - + case "Ed448": case "X22519": case "X448": @@ -962,11 +1004,13 @@ static private OneKey generateOkpKey(String curveName, CBORObject curve) throws } EdDSAGenParameterSpec paramSpec = new EdDSAGenParameterSpec(curveName); - KeyPairGenerator gen = KeyPairGenerator.getInstance("EdDSA", "EdDSA"); + KeyPairGenerator gen = provider != null ? + KeyPairGenerator.getInstance("EdDSA", provider) : + KeyPairGenerator.getInstance("EdDSA", "EdDSA"); gen.initialize(paramSpec); - + KeyPair keyPair = gen.genKeyPair(); - + byte[] rgbX = ((EdDSAPublicKey) keyPair.getPublic()).getAbyte(); byte[] rgbD = ((EdDSAPrivateKey) keyPair.getPrivate()).getSeed(); @@ -978,7 +1022,7 @@ static private OneKey generateOkpKey(String curveName, CBORObject curve) throws key.add(KeyKeys.OKP_D, CBORObject.FromObject(rgbD)); key.publicKey = keyPair.getPublic(); key.privateKey = keyPair.getPrivate(); - + return key; } catch (NoSuchAlgorithmException | NoSuchProviderException e) { @@ -987,7 +1031,7 @@ static private OneKey generateOkpKey(String curveName, CBORObject curve) throws catch (InvalidAlgorithmParameterException e) { throw new CoseException("The curve is not supported", e); } - } + } private void CheckRsaKey() throws CoseException { CBORObject n = this.get(KeyKeys.RSA_N); // modulus, positive int @@ -1012,7 +1056,9 @@ private void CheckRsaKey() throws CoseException { ); try { - KeyFactory factory = KeyFactory.getInstance("RSA"); + KeyFactory factory = cryptoContext.getProvider() != null ? + KeyFactory.getInstance("RSA", cryptoContext.getProvider()) : + KeyFactory.getInstance("RSA"); publicKey = factory.generatePublic(spec); } catch (NoSuchAlgorithmException ex) { throw new CoseException("No provider for algorithm", ex); @@ -1099,7 +1145,9 @@ private void CheckRsaKey() throws CoseException { try { - KeyFactory factory = KeyFactory.getInstance("RSA"); + KeyFactory factory = cryptoContext.getProvider() != null ? + KeyFactory.getInstance("RSA", cryptoContext.getProvider()) : + KeyFactory.getInstance("RSA"); privateKey = factory.generatePrivate(privateKeySpec); } catch (NoSuchAlgorithmException ex) { throw new CoseException("No provider for algorithm", ex); @@ -1109,9 +1157,11 @@ private void CheckRsaKey() throws CoseException { } } - static private OneKey generateRSAKey(int keySize) throws CoseException { + static private OneKey generateRSAKey(int keySize, Provider provider) throws CoseException { try { - KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA"); + KeyPairGenerator gen = provider != null ? + KeyPairGenerator.getInstance("RSA", provider) : + KeyPairGenerator.getInstance("RSA"); gen.initialize(keySize); KeyPair keyPair = gen.genKeyPair(); diff --git a/src/main/java/COSE/Recipient.java b/src/main/java/COSE/Recipient.java index d76e04c..ba88483 100644 --- a/src/main/java/COSE/Recipient.java +++ b/src/main/java/COSE/Recipient.java @@ -20,7 +20,7 @@ import javax.crypto.spec.SecretKeySpec; /** - * + * * @author jimsch */ public class Recipient extends Message { @@ -28,23 +28,31 @@ public class Recipient extends Message { private OneKey senderKey; byte[] rgbEncrypted; List recipientList; - + private CryptoContext cryptoContext = new CryptoContext(null); + + /** + * Gets the {@link CryptoContext} to set a different JCA Provider + */ + public CryptoContext getCryptoContext() { + return cryptoContext; + } + @Override public void DecodeFromCBORObject(CBORObject objRecipient) throws CoseException { if ((objRecipient.size() != 3) && (objRecipient.size() !=4)) throw new CoseException("Invalid Recipient structure"); - + if (objRecipient.get(0).getType() == CBORType.ByteString) { if (objRecipient.get(0).GetByteString().length == 0) objProtected = CBORObject.NewMap(); else objProtected = CBORObject.DecodeFromBytes(objRecipient.get(0).GetByteString()); } else throw new CoseException("Invalid Recipient structure"); - + if (objRecipient.get(1).getType() == CBORType.Map) objUnprotected = objRecipient.get(1); else throw new CoseException("Invalid Recipient structure"); - + if (objRecipient.get(2).getType() == CBORType.ByteString) rgbEncrypted = objRecipient.get(2).GetByteString(); else throw new CoseException("Invalid Recipient structure"); - + if (objRecipient.size() == 4) { if (objRecipient.get(3).getType() == CBORType.Array) { recipientList = new ArrayList<>(); @@ -59,11 +67,11 @@ public void DecodeFromCBORObject(CBORObject objRecipient) throws CoseException { } @Override - protected CBORObject EncodeCBORObject() throws CoseException { + protected CBORObject EncodeCBORObject() throws CoseException { CBORObject obj = CBORObject.NewArray(); if (objProtected.size() > 0) obj.Add(objProtected.EncodeToBytes()); else obj.Add(CBORObject.FromObject(new byte[0])); - + obj.Add(objUnprotected); obj.Add(rgbEncrypted); if (recipientList != null) { @@ -73,14 +81,14 @@ protected CBORObject EncodeCBORObject() throws CoseException { } obj.Add(objR); } - + return obj; } - + public byte[] decrypt(AlgorithmID algCEK, Recipient recip) throws CoseException { AlgorithmID alg = AlgorithmID.FromCBOR(findAttribute(HeaderKeys.Algorithm)); byte[] rgbKey = null; - + if (recip != this) { for (Recipient r : recipientList) { if (recip == r) { @@ -94,12 +102,12 @@ else if (!r.recipientList.isEmpty()) { } } } - + switch (alg) { case Direct: // Direct if (privateKey.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_Octet) throw new CoseException("Mismatch of algorithm and key"); return privateKey.get(KeyKeys.Octet_K.AsCBOR()).GetByteString(); - + case HKDF_HMAC_SHA_256: if (privateKey.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_Octet) throw new CoseException("Needs to be an octet key"); return HKDF(privateKey.get(KeyKeys.Octet_K.AsCBOR()).GetByteString(), algCEK.getKeySize(), algCEK, "SHA256"); @@ -117,55 +125,55 @@ else if (!r.recipientList.isEmpty()) { } else if (privateKey != null) throw new CoseException("Key and algorithm do not agree"); return AES_KeyWrap_Decrypt(alg, rgbKey); - + case ECDH_ES_HKDF_256: case ECDH_SS_HKDF_256: if (privateKey.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_EC2) throw new CoseException("Key and algorithm do not agree"); rgbKey = ECDH_GenSecret(privateKey); return HKDF(rgbKey, algCEK.getKeySize(), algCEK, "SHA256"); - + case ECDH_ES_HKDF_512: case ECDH_SS_HKDF_512: if (privateKey.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_EC2) throw new CoseException("Key and algorithm do not agree"); rgbKey = ECDH_GenSecret(privateKey); return HKDF(rgbKey, algCEK.getKeySize(), algCEK, "SHA512"); - + case ECDH_ES_HKDF_256_AES_KW_128: case ECDH_SS_HKDF_256_AES_KW_128: if (privateKey.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_EC2) throw new CoseException("Key and algorithm do not agree"); rgbKey = ECDH_GenSecret(privateKey); rgbKey = HKDF(rgbKey, 128, AlgorithmID.AES_KW_128, "SHA256"); return AES_KeyWrap_Decrypt(AlgorithmID.AES_KW_128, rgbKey); - + case ECDH_ES_HKDF_256_AES_KW_192: case ECDH_SS_HKDF_256_AES_KW_192: if (privateKey.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_EC2) throw new CoseException("Key and algorithm do not agree"); rgbKey = ECDH_GenSecret(privateKey); rgbKey = HKDF(rgbKey, 192, AlgorithmID.AES_KW_192, "SHA256"); return AES_KeyWrap_Decrypt(AlgorithmID.AES_KW_192, rgbKey); - + case ECDH_ES_HKDF_256_AES_KW_256: case ECDH_SS_HKDF_256_AES_KW_256: if (privateKey.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_EC2) throw new CoseException("Key and algorithm do not agree"); rgbKey = ECDH_GenSecret(privateKey); rgbKey = HKDF(rgbKey, 256, AlgorithmID.AES_KW_256, "SHA256"); return AES_KeyWrap_Decrypt(AlgorithmID.AES_KW_256, rgbKey); - + default: throw new CoseException("Unsupported Recipent Algorithm"); } } - + public void encrypt() throws CoseException { AlgorithmID alg = AlgorithmID.FromCBOR(findAttribute(HeaderKeys.Algorithm)); byte[] rgbKey = null; SecureRandom random; - + int recipientTypes = 0; - + if (recipientList != null && !recipientList.isEmpty()) { if (privateKey != null) throw new CoseException("Cannot have dependent recipients if key is specified"); - + for (Recipient r : recipientList) { switch (r.getRecipientType()) { case 1: @@ -173,16 +181,16 @@ public void encrypt() throws CoseException { recipientTypes |= 1; rgbKey = r.getKey(alg); break; - + default: recipientTypes |= 2; break; } } } - + if (recipientTypes == 3) throw new CoseException("Do not mix direct and indirect recipients"); - + if (recipientTypes == 2) { rgbKey = new byte[alg.getKeySize()/8]; random = new SecureRandom(); @@ -195,7 +203,7 @@ public void encrypt() throws CoseException { case HKDF_HMAC_SHA_512: rgbEncrypted = new byte[0]; break; - + case AES_KW_128: case AES_KW_192: case AES_KW_256: @@ -205,14 +213,14 @@ public void encrypt() throws CoseException { } rgbEncrypted = AES_KeyWrap_Encrypt(alg, rgbKey); break; - + case ECDH_ES_HKDF_256: case ECDH_ES_HKDF_512: case ECDH_SS_HKDF_256: case ECDH_SS_HKDF_512: rgbEncrypted = new byte[0]; break; - + case ECDH_ES_HKDF_256_AES_KW_128: if (privateKey.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_EC2) throw new CoseException("Key and algorithm do not agree"); ECDH_GenEphemeral(); @@ -233,7 +241,7 @@ public void encrypt() throws CoseException { rgbKey = HKDF(rgbKey, 128, AlgorithmID.AES_KW_128, "SHA256"); rgbEncrypted = AES_KeyWrap_Encrypt(AlgorithmID.AES_KW_128, rgbKey); break; - + case ECDH_ES_HKDF_256_AES_KW_192: if (privateKey.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_EC2) throw new CoseException("Key and algorithm do not agree"); ECDH_GenEphemeral(); @@ -279,7 +287,7 @@ public void encrypt() throws CoseException { default: throw new CoseException("Unsupported Recipient Algorithm"); } - + if (recipientList != null) { for (Recipient r : recipientList) { r.SetContent(rgbKey); @@ -292,7 +300,7 @@ public void addRecipient(Recipient recipient) { if (recipientList == null) recipientList = new ArrayList(); recipientList.add(recipient); } - + public List getRecipientList() { return recipientList; } @@ -300,11 +308,11 @@ public List getRecipientList() { public Recipient getRecipient(int iRecipient) { return recipientList.get(iRecipient); } - + public int getRecipientCount() { return recipientList.size(); } - + public int getRecipientType() throws CoseException { AlgorithmID alg = AlgorithmID.FromCBOR(findAttribute(HeaderKeys.Algorithm)); switch (alg) { @@ -316,43 +324,43 @@ public int getRecipientType() throws CoseException { case ECDH_SS_HKDF_256: case ECDH_SS_HKDF_512: return 1; - + default: return 9; } } - + public byte[] getKey(AlgorithmID algCEK) throws CoseException { byte[] rgbSecret; SecureRandom random; - + if (privateKey == null) throw new CoseException("Private key not set for recipient"); - + AlgorithmID alg = AlgorithmID.FromCBOR(findAttribute(HeaderKeys.Algorithm)); - + switch (alg) { case Direct: if (privateKey.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_Octet) throw new CoseException("Key and algorithm do not agree"); return privateKey.get(KeyKeys.Octet_K.AsCBOR()).GetByteString(); - + case AES_KW_128: case AES_KW_192: case AES_KW_256: if (!privateKey.HasKeyType(KeyKeys.KeyType_Octet)) throw new CoseException("Key and algorithm do not agree"); return privateKey.get(KeyKeys.Octet_K).GetByteString(); - + case ECDH_ES_HKDF_256: if (privateKey.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_EC2) throw new CoseException("Key and algorithm do not agree"); ECDH_GenEphemeral(); rgbSecret = ECDH_GenSecret(privateKey); return HKDF(rgbSecret, algCEK.getKeySize(), algCEK, "SHA256"); - + case ECDH_ES_HKDF_512: if (privateKey.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_EC2) throw new CoseException("Key and algorithm do not agree"); ECDH_GenEphemeral(); rgbSecret = ECDH_GenSecret(privateKey); return HKDF(rgbSecret, algCEK.getKeySize(), algCEK, "SHA512"); - + case ECDH_SS_HKDF_256: if (privateKey.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_EC2) throw new CoseException("Key and algorithm do not agree"); if (findAttribute(HeaderKeys.HKDF_Context_PartyU_nonce.AsCBOR()) == null) { @@ -363,7 +371,7 @@ public byte[] getKey(AlgorithmID algCEK) throws CoseException { } rgbSecret = ECDH_GenSecret(privateKey); return HKDF(rgbSecret, algCEK.getKeySize(), algCEK, "SHA256"); - + case ECDH_SS_HKDF_512: if (privateKey.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_EC2) throw new CoseException("Key and algorithm do not agree"); if (findAttribute(HeaderKeys.HKDF_Context_PartyU_nonce.AsCBOR()) == null) { @@ -374,11 +382,11 @@ public byte[] getKey(AlgorithmID algCEK) throws CoseException { } rgbSecret = ECDH_GenSecret(privateKey); return HKDF(rgbSecret, algCEK.getKeySize(), algCEK, "SHA512"); - + case HKDF_HMAC_SHA_256: if (privateKey.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_Octet) throw new CoseException("Needs to be an octet key"); return HKDF(privateKey.get(KeyKeys.Octet_K.AsCBOR()).GetByteString(), algCEK.getKeySize(), algCEK, "SHA256"); - + case HKDF_HMAC_SHA_512: if (privateKey.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_Octet) throw new CoseException("Needs to be an octet key"); return HKDF(privateKey.get(KeyKeys.Octet_K.AsCBOR()).GetByteString(), algCEK.getKeySize(), algCEK, "SHA512"); @@ -387,10 +395,10 @@ public byte[] getKey(AlgorithmID algCEK) throws CoseException { throw new CoseException("Recipient Algorithm not supported"); } } - + /** * Set the key for encrypting/decrypting the recipient key. - * + * * @param key private key for encrypting or decrypting * @exception CoseException Internal COSE package error. * @deprecated In COSE 0.9.1, use SetKey(OneKey) @@ -399,10 +407,10 @@ public byte[] getKey(AlgorithmID algCEK) throws CoseException { public void SetKey(CBORObject key) throws CoseException { privateKey = new OneKey(key); } - + /** * Set the key for encrypting/decrypting the recipient key. - * + * * @param key private key for encrypting or decrypting */ public void SetKey(OneKey key) { @@ -413,17 +421,19 @@ public void SetKey(OneKey key) { public void SetSenderKey(CBORObject key) throws CoseException { senderKey = new OneKey(key); } - + public void SetSenderKey(OneKey key) { senderKey = key; } - + private byte[] AES_KeyWrap_Encrypt(AlgorithmID alg, byte[] rgbKey) throws CoseException { if (rgbKey.length != alg.getKeySize() / 8) throw new CoseException("Key is not the correct size"); try { - Cipher cipher = Cipher.getInstance("AESWrap"); + Cipher cipher = cryptoContext.getProvider() != null ? + Cipher.getInstance("AESWrap", cryptoContext.getProvider()) : + Cipher.getInstance("AESWrap"); cipher.init(Cipher.WRAP_MODE, new SecretKeySpec(rgbKey, "AESWrap")); return cipher.wrap(new SecretKeySpec(rgbContent, "AES")); } catch (NoSuchAlgorithmException ex) { @@ -432,13 +442,15 @@ private byte[] AES_KeyWrap_Encrypt(AlgorithmID alg, byte[] rgbKey) throws CoseEx throw new CoseException("Key Wrap failure", ex); } } - + private byte[] AES_KeyWrap_Decrypt(AlgorithmID alg, byte[] rgbKey) throws CoseException { if (rgbKey.length != alg.getKeySize() / 8) throw new CoseException("Key is not the correct size"); try { - Cipher cipher = Cipher.getInstance("AESWrap"); + Cipher cipher = cryptoContext.getProvider() != null ? + Cipher.getInstance("AESWrap", cryptoContext.getProvider()) : + Cipher.getInstance("AESWrap"); cipher.init(Cipher.UNWRAP_MODE, new SecretKeySpec(rgbKey, "AESWrap")); return ((SecretKeySpec)cipher.unwrap(rgbEncrypted, "AES", Cipher.SECRET_KEY)).getEncoded(); } catch (NoSuchAlgorithmException ex) { @@ -453,18 +465,18 @@ private byte[] AES_KeyWrap_Decrypt(AlgorithmID alg, byte[] rgbKey) throws CoseEx throw new CoseException("Key Unwrap failure", ex); } } - + private void ECDH_GenEphemeral() throws CoseException { OneKey secretKey = OneKey.generateKey(privateKey.get(KeyKeys.EC2_Curve)); - + // pack into EPK header CBORObject epk = secretKey.PublicKey().AsCBOR(); addAttribute(HeaderKeys.ECDH_EPK, epk, Attribute.UNPROTECTED); - + // apply as senderKey senderKey = secretKey; } - + private byte[] ECDH_GenSecret(OneKey key) throws CoseException { OneKey epk; if (senderKey != null) { @@ -480,7 +492,7 @@ private byte[] ECDH_GenSecret(OneKey key) throws CoseException { } epk = new OneKey(cn); } - + if (key.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_EC2) { throw new CoseException("Not an EC2 Key"); } @@ -490,11 +502,13 @@ private byte[] ECDH_GenSecret(OneKey key) throws CoseException { if (epk.get(KeyKeys.EC2_Curve.AsCBOR()) != key.get(KeyKeys.EC2_Curve.AsCBOR())) { throw new CoseException("Curves are not the same"); } - + try { PublicKey pubKey = epk.AsPublicKey(); PrivateKey privKey = key.AsPrivateKey(); - KeyAgreement ecdh = KeyAgreement.getInstance("ECDH"); + KeyAgreement ecdh = cryptoContext.getProvider() != null ? + KeyAgreement.getInstance("ECDH", cryptoContext.getProvider()) : + KeyAgreement.getInstance("ECDH"); ecdh.init(privKey); ecdh.doPhase(pubKey, true); return ecdh.generateSecret(); @@ -509,9 +523,11 @@ private byte[] HKDF(byte[] secret, int cbitKey, AlgorithmID alg, String digest) final String HMAC_ALG_NAME = "Hmac" + digest; byte[] rgbContext = GetKDFInput(cbitKey, alg); - + try { - Mac hmac = Mac.getInstance(HMAC_ALG_NAME); + Mac hmac = cryptoContext.getProvider() != null ? + Mac.getInstance(HMAC_ALG_NAME, cryptoContext.getProvider()) : + Mac.getInstance(HMAC_ALG_NAME); int hashLen = hmac.getMacLength(); CBORObject cnSalt = findAttribute(HeaderKeys.HKDF_Salt.AsCBOR()); @@ -551,12 +567,12 @@ private byte[] HKDF(byte[] secret, int cbitKey, AlgorithmID alg, String digest) private byte[] GetKDFInput(int cbitKey, AlgorithmID algorithmID) { CBORObject obj; - + CBORObject contextArray = CBORObject.NewArray(); - + // First element is - algorithm ID contextArray.Add(algorithmID.AsCBOR()); - + // Second item is - Party U info CBORObject info = CBORObject.NewArray(); contextArray.Add(info); diff --git a/src/main/java/COSE/SignCommon.java b/src/main/java/COSE/SignCommon.java index 4b4c3a0..d009816 100644 --- a/src/main/java/COSE/SignCommon.java +++ b/src/main/java/COSE/SignCommon.java @@ -7,6 +7,7 @@ import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; +import java.security.Provider; import java.security.PublicKey; import java.security.Signature; import java.util.Arrays; @@ -26,9 +27,8 @@ byte[] computeSignature(byte[] rgbToBeSigned, OneKey cnKey) throws CoseException static byte[] computeSignature(AlgorithmID alg, byte[] rgbToBeSigned, OneKey cnKey) throws CoseException { String algName = null; - String provider = null; int sigLen = 0; - + switch (alg) { case ECDSA_256: algName = "SHA256withECDSA"; @@ -44,35 +44,35 @@ static byte[] computeSignature(AlgorithmID alg, byte[] rgbToBeSigned, OneKey cnK break; case EDDSA: algName = "NonewithEdDSA"; - provider = "EdDSA"; break; - + case RSA_PSS_256: algName = "SHA256withRSA/PSS"; break; - + case RSA_PSS_384: algName = "SHA384withRSA/PSS"; break; - + case RSA_PSS_512: algName = "SHA512withRSA/PSS"; break; - + default: throw new CoseException("Unsupported Algorithm Specified"); } - + if (cnKey == null) { throw new NullPointerException(); } - + PrivateKey privKey = cnKey.AsPrivateKey(); if (privKey == null) { throw new CoseException("Private key required to sign"); } - + byte[] result = null; + Provider provider = cnKey.getCryptoContext().getProvider(); try { Signature sig = provider == null ? Signature.getInstance(algName) : Signature.getInstance(algName, provider); @@ -87,10 +87,10 @@ static byte[] computeSignature(AlgorithmID alg, byte[] rgbToBeSigned, OneKey cnK } catch (Exception ex) { throw new CoseException("Signature failure", ex); } - + return result; } - + private static byte[] convertDerToConcat(byte[] der, int len) throws CoseException { // this is far too naive byte[] concat = new byte[len * 2]; @@ -104,7 +104,7 @@ private static byte[] convertDerToConcat(byte[] der, int len) throws CoseExcepti // offset actually 4 + (7-bits of byte 1) kLen = 4 + (der[1] & 0x7f); } - + // calculate start/end of R int rOff = kLen; int rLen = der[rOff - 1]; @@ -117,7 +117,7 @@ private static byte[] convertDerToConcat(byte[] der, int len) throws CoseExcepti } // copy R System.arraycopy(der, rOff, concat, rPad, rLen); - + // calculate start/end of S int sOff = rOff + rLen + 2; int sLen = der[sOff - 1]; @@ -130,10 +130,10 @@ private static byte[] convertDerToConcat(byte[] der, int len) throws CoseExcepti } // copy S System.arraycopy(der, sOff, concat, len + sPad, sLen); - + return concat; } - + boolean validateSignature(byte[] rgbToBeSigned, byte[] rgbSignature, OneKey cnKey) throws CoseException { AlgorithmID alg = AlgorithmID.FromCBOR(findAttribute(HeaderKeys.Algorithm)); return validateSignature(alg, rgbToBeSigned, rgbSignature, cnKey); @@ -141,7 +141,6 @@ boolean validateSignature(byte[] rgbToBeSigned, byte[] rgbSignature, OneKey cnKe static boolean validateSignature(AlgorithmID alg, byte[] rgbToBeSigned, byte[] rgbSignature, OneKey cnKey) throws CoseException { String algName = null; - String provider = null; boolean convert = false; switch (alg) { @@ -157,12 +156,11 @@ static boolean validateSignature(AlgorithmID alg, byte[] rgbToBeSigned, byte[] r algName = "SHA512withECDSA"; convert = true; break; - + case EDDSA: algName = "NonewithEdDSA"; - provider = "EdDSA"; break; - + case RSA_PSS_256: algName = "SHA256withRSA/PSS"; break; @@ -187,6 +185,7 @@ static boolean validateSignature(AlgorithmID alg, byte[] rgbToBeSigned, byte[] r if (pubKey == null) { throw new CoseException("Public key required to verify"); } + Provider provider = cnKey.getCryptoContext().getProvider(); boolean result = false; try { diff --git a/src/main/java/COSE/Signer.java b/src/main/java/COSE/Signer.java index a147b03..7b0b1ef 100644 --- a/src/main/java/COSE/Signer.java +++ b/src/main/java/COSE/Signer.java @@ -25,36 +25,36 @@ public class Signer extends Attribute { protected byte[] rgbSignature; protected String contextString; OneKey cnKey; - + /** * Create a new signer object to add to a SignMessage */ public Signer() { contextString = "Signature"; } - + /** * Create a new signer object for a SignMessage and set the key to be used. - * + * * @param key key to use for signing. */ public Signer(OneKey key) { contextString = "Signature"; cnKey = key; } - + /** * Remove the key object from the signer - * + * * @since COSE 0.9.1 */ public void clearKey() { cnKey = null; } - + /** * Set a key object on a signer - * + * * @since COSE 0.9.1 * @param keyIn key to be used for signing or verification * @throws CoseException - Invalid key passed in @@ -62,45 +62,45 @@ public void clearKey() { public void setKey(OneKey keyIn) throws CoseException { setupKey(keyIn); } - + /** * Set the key on the object, if there is not a signature on this object then set * the algorithm and the key id from the key if they exist on the key and do not exist in the message. - * + * * @param key key to be used] */ private void setupKey(OneKey key) throws CoseException { CBORObject cn2; CBORObject cn; - + cnKey = key; if (rgbSignature != null) return; - + cn = key.get(KeyKeys.Algorithm); if (cn != null) { cn2 = findAttribute(HeaderKeys.Algorithm); if (cn2 == null) addAttribute(HeaderKeys.Algorithm, cn, Attribute.PROTECTED); } - + cn = key.get(KeyKeys.KeyId); if (cn != null) { cn2 = findAttribute(HeaderKeys.KID); if (cn2 == null) addAttribute(HeaderKeys.KID, cn, Attribute.UNPROTECTED); } } - + /** * Internal function used in creating a Sign1Message object from a byte string. - * + * * @param obj COSE_Sign1 encoded object. * @throws CoseException Errors generated by the COSE module */ protected void DecodeFromCBORObject(CBORObject obj) throws CoseException { if (obj.getType() != CBORType.Array) throw new CoseException("Invalid Signer structure"); - + if (obj.size() != 3) throw new CoseException("Invalid Signer structure"); - + if (obj.get(0).getType() == CBORType.ByteString) { rgbProtected = obj.get(0).GetByteString(); if (rgbProtected.length == 0) { @@ -112,12 +112,12 @@ protected void DecodeFromCBORObject(CBORObject obj) throws CoseException { } } else throw new CoseException("Invalid Signer structure"); - + if (obj.get(1).getType() == CBORType.Map) { objUnprotected = obj.get(1); } else throw new CoseException("Invalid Signer structure"); - + if (obj.get(2).getType() == CBORType.ByteString) rgbSignature = obj.get(2).GetByteString(); else if (!obj.get(2).isNull()) throw new CoseException("Invalid Signer structure"); @@ -127,13 +127,13 @@ protected void DecodeFromCBORObject(CBORObject obj) throws CoseException { (countersignature.getValues().isEmpty())) { throw new CoseException("Invalid countersignature attribute"); } - + if (countersignature.get(0).getType() == CBORType.Array) { for (CBORObject csObj : countersignature.getValues()) { if (csObj.getType() != CBORType.Array) { throw new CoseException("Invalid countersignature attribute"); } - + CounterSign cs = new CounterSign(csObj); cs.setObject(this); this.addCountersignature(cs); @@ -145,22 +145,22 @@ protected void DecodeFromCBORObject(CBORObject obj) throws CoseException { this.addCountersignature(cs); } } - + countersignature = this.findAttribute(HeaderKeys.CounterSignature0, UNPROTECTED); if (countersignature != null) { if (countersignature.getType() != CBORType.ByteString) { throw new CoseException("Invalid Countersignature0 attribute"); } - + CounterSign1 cs = new CounterSign1(countersignature.GetByteString()); cs.setObject(this); this.counterSign1 = cs; } - } - + } + /** * Internal function used to create a serialization of a COSE_Sign1 message - * + * * @return CBOR object which can be encoded. * @throws CoseException Errors generated by the COSE module */ @@ -169,11 +169,11 @@ protected CBORObject EncodeToCBORObject() throws CoseException { if (rgbSignature == null) throw new CoseException("Message not yet signed"); if (rgbProtected == null) throw new CoseException("Internal Error"); CBORObject obj = CBORObject.NewArray(); - + obj.Add(rgbProtected); obj.Add(objUnprotected); obj.Add(rgbSignature); - + return obj; } @@ -183,7 +183,7 @@ public void sign(byte[] rgbBodyProtected, byte[] rgbContent) throws CoseExceptio if(objProtected.size() == 0) rgbProtected = new byte[0]; else rgbProtected = objProtected.EncodeToBytes(); } - + CBORObject obj = CBORObject.NewArray(); obj.Add(contextString); obj.Add(rgbBodyProtected); @@ -192,12 +192,12 @@ public void sign(byte[] rgbBodyProtected, byte[] rgbContent) throws CoseExceptio obj.Add(rgbContent); AlgorithmID alg = AlgorithmID.FromCBOR(findAttribute(HeaderKeys.Algorithm)); - - rgbSignature = SignCommon.computeSignature(alg, obj.EncodeToBytes(), cnKey); - + + rgbSignature = SignCommon.computeSignature(alg, obj.EncodeToBytes(), cnKey); + ProcessCounterSignatures(); } - + public boolean validate(byte[] rgbBodyProtected, byte[] rgbContent) throws CoseException { CBORObject obj = CBORObject.NewArray(); @@ -209,31 +209,31 @@ public boolean validate(byte[] rgbBodyProtected, byte[] rgbContent) throws CoseE AlgorithmID alg = AlgorithmID.FromCBOR(findAttribute(HeaderKeys.Algorithm)); - return SignCommon.validateSignature(alg, obj.EncodeToBytes(), rgbSignature, cnKey); + return SignCommon.validateSignature(alg, obj.EncodeToBytes(), rgbSignature, cnKey); } - - + + List counterSignList = new ArrayList(); CounterSign1 counterSign1; - + public void addCountersignature(CounterSign countersignature) { counterSignList.add(countersignature); } - + public List getCountersignerList() { return counterSignList; } - + public CounterSign1 getCountersign1() { return counterSign1; } - + public void setCountersign1(CounterSign1 value) { counterSign1 = value; } - + protected void ProcessCounterSignatures() throws CoseException { if (!counterSignList.isEmpty()) { if (counterSignList.size() == 1) { @@ -249,19 +249,19 @@ protected void ProcessCounterSignatures() throws CoseException { addAttribute(HeaderKeys.CounterSignature, list, Attribute.UNPROTECTED); } } - + if (counterSign1 != null) { counterSign1.sign(rgbProtected, rgbSignature); addAttribute(HeaderKeys.CounterSignature0, counterSign1.EncodeToCBORObject(), Attribute.UNPROTECTED); } } - + public boolean validate(CounterSign1 countersignature) throws CoseException { return countersignature.validate(rgbProtected, rgbSignature); } - + public boolean validate(CounterSign countersignature) throws CoseException { return countersignature.validate(rgbProtected, rgbSignature); } - + } diff --git a/src/test/java/COSE/RegressionTest.java b/src/test/java/COSE/RegressionTest.java index 6a506d0..9f30cb6 100644 --- a/src/test/java/COSE/RegressionTest.java +++ b/src/test/java/COSE/RegressionTest.java @@ -30,27 +30,32 @@ public class RegressionTest extends TestBase { @Parameters(name = "{index}: {0})") public static Collection data() { return Arrays.asList(new Object[] { - "Examples/countersign", - "Examples/countersign0", - "Examples/eddsa-examples", + "Examples/CWT", + "Examples/RFC8152", + "Examples/X25519-tests", "Examples/aes-ccm-examples", "Examples/aes-gcm-examples", "Examples/aes-wrap-examples", "Examples/cbc-mac-examples", + //TODO "Examples/chacha-poly-examples", + "Examples/countersign", + "Examples/countersign1", "Examples/ecdh-direct-examples", "Examples/ecdh-wrap-examples", "Examples/ecdsa-examples", + "Examples/eddsa-examples", "Examples/encrypted-tests", "Examples/enveloped-tests", + //TODO "Examples/hashsig", + //TODO "Examples/hkdf-aes-examples", "Examples/hkdf-hmac-sha-examples", "Examples/hmac-examples", - "Examples/mac-tests", "Examples/mac0-tests", - "Examples/sign-tests", - "Examples/sign1-tests", - "Examples/RFC8152", + "Examples/mac-tests", + //TODO "Examples/rsa-oaep-examples", "Examples/rsa-pss-examples", - "Examples/CWT" + "Examples/sign1-tests", + "Examples/sign-tests" }); } @@ -58,55 +63,55 @@ public static Collection data() { public /* NOT private */ String directoryName; public int CFails = 0; - + @Test public void ProcessDirectory() { CFails=0; - File directory = new File(directoryName); - if (!directory.isDirectory()) { - directory = new File("D:\\Projects\\cose\\" + directoryName); - } + File directory = new File("src/test/resources/" + directoryName); + org.junit.Assert.assertTrue(directory.isDirectory()); File[] contents = directory.listFiles(); org.junit.Assert.assertNotNull(directoryName, contents); for ( File f : contents) { ProcessFile(f.getAbsolutePath()); - } + } assertEquals(0, CFails); } public void ProcessFile(String test) { - + if (!test.endsWith(".json")) return; try { int fails = CFails; System.out.print("Check: " + test); InputStream str = new FileInputStream(test); CBORObject foo = CBORObject.ReadJSON(str); - + ProcessJSON(foo); if (fails == CFails) System.out.print("... PASS\n"); else System.out.print("... FAIL\n"); } catch (CoseException e) { - if (e.getMessage().equals("Unsupported key size") || + if (e.getMessage().equals("Unsupported key size") || e.getMessage().equals("Unsupported Algorithm")) { - System.out.print("... SKIP\nException " + e + "\n"); + System.out.print("... SKIP\nException " + e + "\n"); } else { - System.out.print("... FAIL\nException " + e + "\n"); - CFails++; + System.out.print("... FAIL\nException " + e + "\n"); + e.printStackTrace(); + CFails++; } } catch(Exception e) { System.out.print("... FAIL\nException " + e + "\n"); + e.printStackTrace(); CFails++; } } - + public void ProcessJSON(CBORObject control) throws CoseException, IllegalStateException, Exception { CBORObject input = control.get("input"); - + if (input.ContainsKey("mac0")) { VerifyMac0Test(control); BuildMac0Test(control); @@ -132,16 +137,16 @@ else if (input.ContainsKey("sign0")) { BuildSign0Message(control); } } - + public void BuildEncryptTest(CBORObject cnControl) throws CoseException, IllegalStateException, Exception { CBORObject cnFail = cnControl.get("fail"); if ((cnFail != null) && cnFail.AsBoolean()) return; - + CBORObject cnInput = cnControl.get("input"); CBORObject cnEncrypt = cnInput.get("encrypted"); - + Encrypt0Message msg = new Encrypt0Message(); - + CBORObject cn = cnInput.get("plaintext"); if (cn == null) { cn = cnInput.get("plaintext_hex"); @@ -155,11 +160,11 @@ public void BuildEncryptTest(CBORObject cnControl) throws CoseException, Illegal if (cnEncrypt.ContainsKey("countersign0")) { AddCounterSignature0(msg, cnEncrypt.get("countersign0")); } - + if (cnEncrypt.ContainsKey("countersign")) { AddCounterSignature(msg, cnEncrypt.get("countersign")); } - + CBORObject cnRecipients = cnEncrypt.get("recipients"); cnRecipients = cnRecipients.get(0); @@ -168,18 +173,18 @@ public void BuildEncryptTest(CBORObject cnControl) throws CoseException, Illegal CBORObject kk = cnKey.get(CBORObject.FromObject(-1)); msg.encrypt(kk.GetByteString()); - + byte[] rgb = msg.EncodeToBytes(); - + _VerifyEncrypt(cnControl, rgb); } - + public void VerifyEncryptTest(CBORObject control) throws CoseException { String strExample = control.get("output").get("cbor").AsString(); byte[] rgb = hexStringToByteArray(strExample); _VerifyEncrypt(control, rgb); } - + public void _VerifyEncrypt(CBORObject control, byte[] rgbData) throws CoseException { CBORObject cnInput = control.get("input"); boolean fFail = false; @@ -217,7 +222,7 @@ public void _VerifyEncrypt(CBORObject control, byte[] rgbData) throws CoseExcept try { byte[] rgbContent = enc0.decrypt(kk.GetByteString()); if ((cnFail != null) && !cnFail.AsBoolean()) CFails++; - + byte[] oldContent; CBORObject cnOldContent = cnInput.get("plaintext"); if (cnOldContent == null) { @@ -227,7 +232,7 @@ public void _VerifyEncrypt(CBORObject control, byte[] rgbData) throws CoseExcept else { oldContent = cnInput.get("plaintext").AsString().getBytes(StandardCharsets.UTF_8); } - + assertArrayEquals(oldContent, rgbContent); } catch(CoseException e) { @@ -235,9 +240,11 @@ public void _VerifyEncrypt(CBORObject control, byte[] rgbData) throws CoseExcept throw e; } if (!fFailBody && ((cnFail == null) || !cnFail.AsBoolean())) CFails ++; + e.printStackTrace(); } catch (Exception e) { if (!fFailBody && ((cnFail == null) || !cnFail.AsBoolean())) CFails ++; + e.printStackTrace(); } CBORObject cnCounter = cnEncrypt.get("countersign0"); @@ -283,11 +290,11 @@ void BuildMacTest(CBORObject cnControl) throws Exception } SetSendingAttributes(hEncObj, cnEnveloped, true); - + if (cnEnveloped.ContainsKey("countersign0")) { AddCounterSignature0(hEncObj, cnEnveloped.get("countersign0")); } - + if (cnEnveloped.ContainsKey("countersign")) { AddCounterSignature(hEncObj, cnEnveloped.get("countersign")); } @@ -308,16 +315,16 @@ void BuildMacTest(CBORObject cnControl) throws Exception return; } - + public void BuildMac0Test(CBORObject cnControl) throws CoseException, IllegalStateException, Exception { CBORObject cnFail = cnControl.get("fail"); if ((cnFail != null) && cnFail.AsBoolean()) return; - + CBORObject cnInput = cnControl.get("input"); CBORObject cnEncrypt = cnInput.get("mac0"); - + MAC0Message msg = new MAC0Message(); - + CBORObject cn = cnInput.get("plaintext"); if (cn == null) { cn = cnInput.get("plaintext_hex"); @@ -326,13 +333,13 @@ public void BuildMac0Test(CBORObject cnControl) throws CoseException, IllegalSta else { msg.SetContent(cn.AsString()); } - + SetSendingAttributes(msg, cnEncrypt, true); - + if (cnEncrypt.ContainsKey("countersign0")) { AddCounterSignature0(msg, cnEncrypt.get("countersign0")); } - + if (cnEncrypt.ContainsKey("countersign")) { AddCounterSignature(msg, cnEncrypt.get("countersign")); } @@ -345,9 +352,9 @@ public void BuildMac0Test(CBORObject cnControl) throws CoseException, IllegalSta CBORObject kk = cnKey.get(CBORObject.FromObject(-1)); msg.Create(kk.GetByteString()); - + byte[] rgb = msg.EncodeToBytes(); - + _VerifyMac0(cnControl, rgb); } @@ -356,7 +363,7 @@ public void VerifyMac0Test(CBORObject control) throws CoseException { byte[] rgb = hexStringToByteArray(strExample); _VerifyMac0(control, rgb); } - + public void _VerifyMac0(CBORObject control, byte[] rgbData) throws CoseException { CBORObject cnInput = control.get("input"); int type; @@ -402,7 +409,7 @@ public void _VerifyMac0(CBORObject control, byte[] rgbData) throws CoseException cnCounter = cnMac.get("countersign"); if (cnCounter != null) { CheckCounterSignatures(msg, cnCounter); - } + } } catch(CoseException e) { if (e.getMessage() == "Unsupported key size") { @@ -420,7 +427,7 @@ public void VerifyMacTest(CBORObject control) throws CoseException { byte[] rgb = hexStringToByteArray(strExample); _VerifyMac(control, rgb); } - + public void _VerifyMac(CBORObject control, byte[] rgbData) throws CoseException { CBORObject cnInput = control.get("input"); boolean fFail = false; @@ -450,7 +457,7 @@ public void _VerifyMac(CBORObject control, byte[] rgbData) throws CoseException OneKey cnKey = BuildKey(cnRecipients.get("key"), false); Recipient recipient = mac.getRecipient(0); recipient.SetKey(cnKey); - + CBORObject cnStatic = cnRecipients.get("sender_key"); if (cnStatic != null) { if (recipient.findAttribute(HeaderKeys.ECDH_SPK) == null) { @@ -477,7 +484,7 @@ public void _VerifyMac(CBORObject control, byte[] rgbData) throws CoseException CFails++; return; } - + CBORObject cnCounter = cnMac.get("countersign0"); if (cnCounter != null) { CheckCounterSignature0(msg, cnCounter); @@ -566,7 +573,7 @@ boolean DecryptMessage(byte[] rgbEncoded, boolean fFailBody, CBORObject cnEnvelo try { byte[] rgbOut = hEnc.decrypt(hRecip); if (fFailBody) fRet = false; - else fRet = true; + else fRet = true; } catch(CoseException e) { if (e.getMessage() == "Unsupported key size") { @@ -589,7 +596,7 @@ boolean DecryptMessage(byte[] rgbEncoded, boolean fFailBody, CBORObject cnEnvelo if (cnCounter != null) { CheckCounterSignatures(msg, cnCounter); } - + } catch(CoseException e) { throw e; @@ -614,7 +621,7 @@ int _ValidateEnveloped(CBORObject cnControl, byte[] rgbEncoded) throws CoseExcep cnEnveloped = cnInput.get("enveloped"); cnRecipients = cnEnveloped.get("recipients"); - + for (iRecipient=0; iRecipient 1) && + if ((cSigConfig.getValues().size() > 1) && (cSigs.getValues().size() != msg.getCountersignerList().size())) { CFails++; return; @@ -1528,7 +1536,7 @@ void CheckCounterSignatures(Signer msg, CBORObject cSigInfo) } CBORObject cSigConfig = cSigInfo.get("signers"); - if ((cSigConfig.getValues().size() > 1) && + if ((cSigConfig.getValues().size() > 1) && (cSigs.getValues().size() != msg.getCountersignerList().size())) { CFails++; return; @@ -1640,6 +1648,7 @@ void CheckCounterSignature0(Signer msg, CBORObject cSigInfo) } catch (Exception e) { CFails++; + e.printStackTrace(); } - } + } } diff --git a/src/test/resources/Examples/CWT/A_3.json b/src/test/resources/Examples/CWT/A_3.json new file mode 100644 index 0000000..1951d14 --- /dev/null +++ b/src/test/resources/Examples/CWT/A_3.json @@ -0,0 +1,28 @@ +{ + "title":"CWT - Appendix A.3 - Signed w/ ECDSA 256", + "input":{ + "plaintext_hex":"a70175636f61703a2f2f61732e6578616d706c652e636f6d02656572696b77037818636f61703a2f2f6c696768742e6578616d706c652e636f6d041a5612aeb0051a5610d9f0061a5610d9f007420b71", + "sign0":{ + "key":{ + "kty":"EC", + "crv":"P-256", + "d_hex":"6c1382765aec5358f117733d281c1c7bdc39884d04a45a1e6c67c858bc206c19", + "y_hex":"60f7f1a780d8a783bfb7a2dd6b2796e8128dbbcef9d3d168db9529971a36e7b9", + "x_hex":"143329cce7868e416927599cf65a34f3ce2ffda55a7eca69ed8919a394d42f0f" + }, + "unprotected":{ + }, + "protected":{ + "alg":"ES256" + }, + "alg":"ES256" + } + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653143A10126405850A70175636F61703A2F2F61732E6578616D706C652E636F6D02656572696B77037818636F61703A2F2F6C696768742E6578616D706C652E636F6D041A5612AEB0051A5610D9F0061A5610D9F007420B71" + }, + "output":{ + "cbor_diag":"18([h'A10126', {}, h'A70175636F61703A2F2F61732E6578616D706C652E636F6D02656572696B77037818636F61703A2F2F6C696768742E6578616D706C652E636F6D041A5612AEB0051A5610D9F0061A5610D9F007420B71', h'5427C1FF28D23FBAD1F29C4C7C6A555E601D6FA29F9179BC3D7438BACACA5ACD08C8D4D4F96131680C429A01F85951ECEE743A52B9B63632C57209120E1C9E30'])", + "cbor":"D28443A10126A05850A70175636F61703A2F2F61732E6578616D706C652E636F6D02656572696B77037818636F61703A2F2F6C696768742E6578616D706C652E636F6D041A5612AEB0051A5610D9F0061A5610D9F007420B7158405427C1FF28D23FBAD1F29C4C7C6A555E601D6FA29F9179BC3D7438BACACA5ACD08C8D4D4F96131680C429A01F85951ECEE743A52B9B63632C57209120E1C9E30" + } +} diff --git a/src/test/resources/Examples/CWT/A_4.json b/src/test/resources/Examples/CWT/A_4.json new file mode 100644 index 0000000..e60b7f4 --- /dev/null +++ b/src/test/resources/Examples/CWT/A_4.json @@ -0,0 +1,38 @@ +{ + "title":"CWT doument - Appendix A.4", + "input":{ + "plaintext_hex":"a70175636f61703a2f2f61732e6578616d706c652e636f6d02656572696b77037818636f61703a2f2f6c696768742e6578616d706c652e636f6d041a5612aeb0051a5610d9f0061a5610d9f007420b71", + "mac0":{ + "alg":"HS256/64", + "protected":{ + "alg":"HS256/64" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k_hex":"403697de87af64611c1d32a05dab0fe1fcb715a86ab435f1ec99192d79569388" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A10104405850A70175636F61703A2F2F61732E6578616D706C652E636F6D02656572696B77037818636F61703A2F2F6C696768742E6578616D706C652E636F6D041A5612AEB0051A5610D9F0061A5610D9F007420B71", + "CEK_hex":"403697DE87AF64611C1D32A05DAB0FE1FCB715A86AB435F1EC99192D79569388", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A10104', {}, h'A70175636F61703A2F2F61732E6578616D706C652E636F6D02656572696B77037818636F61703A2F2F6C696768742E6578616D706C652E636F6D041A5612AEB0051A5610D9F0061A5610D9F007420B71', h'093101EF6D789200'])", + "cbor":"D18443A10104A05850A70175636F61703A2F2F61732E6578616D706C652E636F6D02656572696B77037818636F61703A2F2F6C696768742E6578616D706C652E636F6D041A5612AEB0051A5610D9F0061A5610D9F007420B7148093101EF6D789200" + } +} diff --git a/src/test/resources/Examples/CWT/A_5.json b/src/test/resources/Examples/CWT/A_5.json new file mode 100644 index 0000000..4bd6edb --- /dev/null +++ b/src/test/resources/Examples/CWT/A_5.json @@ -0,0 +1,39 @@ +{ + "title":"CWT draft - Example A.5 - Encrypted", + "input":{ + "plaintext_hex":"a70175636f61703a2f2f61732e6578616d706c652e636f6d02656572696b77037818636f61703a2f2f6c696768742e6578616d706c652e636f6d041a5612aeb0051a5610d9f0061a5610d9f007420b71", + "encrypted":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k_hex":"231f4c4d4d3051fdc2ec0a3851d5b383" + }, + "unprotected":{ + "alg":"direct" + } + } + ] + }, + "rng_stream":[ + "99A0D7846E762C49FFE8A63E0B" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8368456E63727970743043A1010A40", + "CEK_hex":"231F4C4D4D3051FDC2EC0A3851D5B383" + }, + "output":{ + "cbor_diag":"16([h'A1010A', {5: h'99A0D7846E762C49FFE8A63E0B'}, h'B918A11FD81E438B7F973D9E2E119BCB22424BA0F38A80F27562F400EE1D0D6C0FDB559C02421FD384FC2EBE22D7071378B0EA7428FFF157444D45F7E6AFCDA1AAE5F6495830C58627087FC5B4974F319A8707A635DD643B'])", + "cbor":"D08343A1010AA1054D99A0D7846E762C49FFE8A63E0B5858B918A11FD81E438B7F973D9E2E119BCB22424BA0F38A80F27562F400EE1D0D6C0FDB559C02421FD384FC2EBE22D7071378B0EA7428FFF157444D45F7E6AFCDA1AAE5F6495830C58627087FC5B4974F319A8707A635DD643B" + } +} diff --git a/src/test/resources/Examples/CWT/A_6.json b/src/test/resources/Examples/CWT/A_6.json new file mode 100644 index 0000000..b8cfa88 --- /dev/null +++ b/src/test/resources/Examples/CWT/A_6.json @@ -0,0 +1,39 @@ +{ + "title":"CWT draft - Example A.6 - Signed & Encrypted", + "input":{ + "plaintext_hex":"d28443a10126a05850a70175636f61703a2f2f61732e6578616d706c652e636f6d02656572696b77037818636f61703a2f2f6c696768742e6578616d706c652e636f6d041a5612aeb0051a5610d9f0061a5610d9f007420b7158405427c1ff28d23fbad1f29c4c7c6a555e601d6fa29f9179bc3d7438bacaca5acd08c8d4d4f96131680c429a01f85951ecee743a52b9b63632c57209120e1c9e30", + "encrypted":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k_hex":"231f4c4d4d3051fdc2ec0a3851d5b383" + }, + "unprotected":{ + "alg":"direct" + } + } + ] + }, + "rng_stream":[ + "86BBD41CC32604396324B7F380" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8368456E63727970743043A1010A40", + "CEK_hex":"231F4C4D4D3051FDC2EC0A3851D5B383" + }, + "output":{ + "cbor_diag":"16([h'A1010A', {5: h'86BBD41CC32604396324B7F380'}, h'72439FBFF538AA7B601EBFB29454050A3C99FD13B27216D084556496C7355C4BB462510F8E0E8479DBE08722D620E96BCB7764D75140D96220F062679B46B897E7ABE0C325DC2C96D8BB2C8334E3B92A42C0078983E753C054E647AD5387ED149F802F52B5A95EBF5F153C4FD64854AB7531E082B7F22721F939D257C94F8BC248E1D9CF04F9DD4E5DE7AB62DF37842FABEC230A657D4ABF7162BC786345EBB8EB3AF0'])", + "cbor":"D08343A1010AA1054D86BBD41CC32604396324B7F38058A372439FBFF538AA7B601EBFB29454050A3C99FD13B27216D084556496C7355C4BB462510F8E0E8479DBE08722D620E96BCB7764D75140D96220F062679B46B897E7ABE0C325DC2C96D8BB2C8334E3B92A42C0078983E753C054E647AD5387ED149F802F52B5A95EBF5F153C4FD64854AB7531E082B7F22721F939D257C94F8BC248E1D9CF04F9DD4E5DE7AB62DF37842FABEC230A657D4ABF7162BC786345EBB8EB3AF0" + } +} diff --git a/src/test/resources/Examples/CWT/A_7.json b/src/test/resources/Examples/CWT/A_7.json new file mode 100644 index 0000000..24433e0 --- /dev/null +++ b/src/test/resources/Examples/CWT/A_7.json @@ -0,0 +1,38 @@ +{ + "title":"CWT doument - Appendix A.7", + "input":{ + "plaintext_hex":"a106fb41d584367c200000", + "mac0":{ + "alg":"HS256/64", + "protected":{ + "alg":"HS256/64" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k_hex":"403697de87af64611c1d32a05dab0fe1fcb715a86ab435f1ec99192d79569388" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A10104404BA106FB41D584367C200000", + "CEK_hex":"403697DE87AF64611C1D32A05DAB0FE1FCB715A86AB435F1EC99192D79569388", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A10104', {}, h'A106FB41D584367C200000', h'B8816F34C0542892'])", + "cbor":"D18443A10104A04BA106FB41D584367C20000048B8816F34C0542892" + } +} diff --git a/src/test/resources/Examples/LICENSE b/src/test/resources/Examples/LICENSE new file mode 100644 index 0000000..cf1ab25 --- /dev/null +++ b/src/test/resources/Examples/LICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/src/test/resources/Examples/RFC8152/Appendix_B.json b/src/test/resources/Examples/RFC8152/Appendix_B.json new file mode 100644 index 0000000..445ac50 --- /dev/null +++ b/src/test/resources/Examples/RFC8152/Appendix_B.json @@ -0,0 +1,66 @@ +{ + "title":"Triple layer encryption example", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "unprotected":{ + "alg":"A128KW" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example", + "epk":{ + "kty":"EC", + "crv":"P-256", + "x":"mPUKT_bAWGHIhg0TpjjqVsP1rXWQu_vwVOHHtNkdYoA", + "y":"8BQAsImGeAS46fyWw5MhYfGTT0IjBpFw2SS34Dv4Irs" + } + } + } + ] + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A", + "02D1F7E6F26C43D4868D87CE", + "848DF1C3C9CF4DF2FE6C632BF7886413F76E88525AD90E360EE04AC1A0CC274D" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"B2353161740AACF1F7163647984B522A", + "recipients":[ + { + "KEK_hex":"11B37A6A9D933BA85869E748982E5A3A", + "recipients":[ + { + "Context_hex":"842283F6F6F683F6F6F682188044A1013818", + "Secret_hex":"B50754C19898B5FAA3A5C4B68D0859D4DBEED265A474F1CE1E8B7245F1D137E3" + } + ] + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'64F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B', [[h'', {1: -3}, h'DBD43C4E9D719C27C6275C67D628D493F090593DB8218F11', [[h'A1013818', {-1: {1: 2, -1: 1, -2: h'B2ADD44368EA6D641F9CA9AF308B4079AEB519F11E9B8A55A600B21233E86E68', -3: false}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'']]]]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582464F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B818440A101225818DBD43C4E9D719C27C6275C67D628D493F090593DB8218F11818344A1013818A220A401022001215820B2ADD44368EA6D641F9CA9AF308B4079AEB519F11E9B8A55A600B21233E86E6822F40458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6540" + } +} diff --git a/src/test/resources/Examples/RFC8152/Appendix_C_1_1.json b/src/test/resources/Examples/RFC8152/Appendix_C_1_1.json new file mode 100644 index 0000000..1642980 --- /dev/null +++ b/src/test/resources/Examples/RFC8152/Appendix_C_1_1.json @@ -0,0 +1,38 @@ +{ + "title":"JOSE Cookbook Example 4.2 - RSA-PSS signature", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + } + ] + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E61747572654043A101264054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10126', {4: h'3131'}, h'E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A']]])", + "cbor":"D8628440A054546869732069732074686520636F6E74656E742E818343A10126A1044231315840E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A" + } +} diff --git a/src/test/resources/Examples/RFC8152/Appendix_C_1_2.json b/src/test/resources/Examples/RFC8152/Appendix_C_1_2.json new file mode 100644 index 0000000..e642387 --- /dev/null +++ b/src/test/resources/Examples/RFC8152/Appendix_C_1_2.json @@ -0,0 +1,57 @@ +{ + "title":"JOSE Cookbook Example 4.8 - multiple signatures", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + }, + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"sig", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ES512" + }, + "unprotected":{ + "kid":"bilbo.baggins@hobbiton.example" + } + } + ] + } + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E61747572654043A101264054546869732069732074686520636F6E74656E742E" + }, + { + "ToBeSign_hex":"85695369676E61747572654044A10138234054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10126', {4: h'3131'}, h'E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A'], [h'A1013823', {4: h'62696C626F2E62616767696E7340686F626269746F6E2E6578616D706C65'}, h'00A2D28A7C2BDB1587877420F65ADF7D0B9A06635DD1DE64BB62974C863F0B160DD2163734034E6AC003B01E8705524C5C4CA479A952F0247EE8CB0B4FB7397BA08D009E0C8BF482270CC5771AA143966E5A469A09F613488030C5B07EC6D722E3835ADB5B2D8C44E95FFB13877DD2582866883535DE3BB03D01753F83AB87BB4F7A0297']]])", + "cbor":"D8628440A054546869732069732074686520636F6E74656E742E828343A10126A1044231315840E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A8344A1013823A104581E62696C626F2E62616767696E7340686F626269746F6E2E6578616D706C65588400A2D28A7C2BDB1587877420F65ADF7D0B9A06635DD1DE64BB62974C863F0B160DD2163734034E6AC003B01E8705524C5C4CA479A952F0247EE8CB0B4FB7397BA08D009E0C8BF482270CC5771AA143966E5A469A09F613488030C5B07EC6D722E3835ADB5B2D8C44E95FFB13877DD2582866883535DE3BB03D01753F83AB87BB4F7A0297" + } +} diff --git a/src/test/resources/Examples/RFC8152/Appendix_C_1_3.json b/src/test/resources/Examples/RFC8152/Appendix_C_1_3.json new file mode 100644 index 0000000..ce2c982 --- /dev/null +++ b/src/test/resources/Examples/RFC8152/Appendix_C_1_3.json @@ -0,0 +1,63 @@ +{ + "title":"SIG-03: Counter Signature example", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "countersign":{ + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + } + ] + }, + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + } + ] + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E61747572654043A101264054546869732069732074686520636F6E74656E742E" + } + ], + "countersigners":[ + { + "ToBeSign_hex":"8570436F756E7465725369676E61747572654043A101264054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'', {7: [h'A10126', {4: h'3131'}, h'5AC05E289D5D0E1B0A7F048A5D2B643813DED50BC9E49220F4F7278F85F19D4A77D655C9D3B51E805A74B099E1E085AACD97FC29D72F887E8802BB6650CCEB2C']}, h'546869732069732074686520636F6E74656E742E', [[h'A10126', {4: h'3131'}, h'E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A']]])", + "cbor":"D8628440A1078343A10126A10442313158405AC05E289D5D0E1B0A7F048A5D2B643813DED50BC9E49220F4F7278F85F19D4A77D655C9D3B51E805A74B099E1E085AACD97FC29D72F887E8802BB6650CCEB2C54546869732069732074686520636F6E74656E742E818343A10126A1044231315840E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A" + } +} diff --git a/src/test/resources/Examples/RFC8152/Appendix_C_1_4.json b/src/test/resources/Examples/RFC8152/Appendix_C_1_4.json new file mode 100644 index 0000000..e88db31 --- /dev/null +++ b/src/test/resources/Examples/RFC8152/Appendix_C_1_4.json @@ -0,0 +1,44 @@ +{ + "title":"Sig-04: Add crit flag and origination time", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "protected":{ + "reserved":false, + "crit":[ + "reserved" + ] + }, + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + } + ] + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E617475726556A2687265736572766564F4028168726573657276656443A101264054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'A2687265736572766564F40281687265736572766564', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10126', {4: h'3131'}, h'3FC54702AA56E1B2CB20284294C9106A63F91BAC658D69351210A031D8FC7C5FF3E4BE39445B1A3E83E1510D1ACA2F2E8A7C081C7645042B18ABA9D1FAD1BD9C']]])", + "cbor":"D8628456A2687265736572766564F40281687265736572766564A054546869732069732074686520636F6E74656E742E818343A10126A10442313158403FC54702AA56E1B2CB20284294C9106A63F91BAC658D69351210A031D8FC7C5FF3E4BE39445B1A3E83E1510D1ACA2F2E8A7C081C7645042B18ABA9D1FAD1BD9C" + } +} diff --git a/src/test/resources/Examples/RFC8152/Appendix_C_2_1.json b/src/test/resources/Examples/RFC8152/Appendix_C_2_1.json new file mode 100644 index 0000000..279fd39 --- /dev/null +++ b/src/test/resources/Examples/RFC8152/Appendix_C_2_1.json @@ -0,0 +1,31 @@ +{ + "title":" - EC signature", + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + }, + "alg":"ES256" + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653143A101264054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"18([h'A10126', {4: h'3131'}, h'546869732069732074686520636F6E74656E742E', h'8EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36'])", + "cbor":"D28443A10126A10442313154546869732069732074686520636F6E74656E742E58408EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36" + } +} diff --git a/src/test/resources/Examples/RFC8152/Appendix_C_3_1.json b/src/test/resources/Examples/RFC8152/Appendix_C_3_1.json new file mode 100644 index 0000000..5116563 --- /dev/null +++ b/src/test/resources/Examples/RFC8152/Appendix_C_3_1.json @@ -0,0 +1,56 @@ +{ + "title":"Encryption example for spec - Direct ECDH", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example", + "epk":{ + "kty":"EC", + "crv":"P-256", + "x":"mPUKT_bAWGHIhg0TpjjqVsP1rXWQu_vwVOHHtNkdYoA", + "y":"8BQAsImGeAS46fyWw5MhYfGTT0IjBpFw2SS34Dv4Irs" + } + }, + "unsent":{ + "compressed": 1 + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3", + "C9CF4DF2FE6C632BF7886413" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"56074D506729CA40C4B4FE50C6439893", + "recipients":[ + { + "Context_hex":"840183F6F6F683F6F6F682188044A1013818", + "Secret_hex":"4B31712E096E5F20B4ECF9790FD8CC7C8B7E2C8AD90BDA81CB224F62C0E7B9A6" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'C9CF4DF2FE6C632BF7886413'}, h'7ADBE2709CA818FB415F1E5DF66F4E1A51053BA6D65A1A0C52A357DA7A644B8070A151B0', [[h'A1013818', {-1: {1: 2, -1: 1, -2: h'98F50A4FF6C05861C8860D13A638EA56C3F5AD7590BBFBF054E1C7B4D91D6280', -3: true}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'']]])", + "cbor":"D8608443A10101A1054CC9CF4DF2FE6C632BF788641358247ADBE2709CA818FB415F1E5DF66F4E1A51053BA6D65A1A0C52A357DA7A644B8070A151B0818344A1013818A220A40102200121582098F50A4FF6C05861C8860D13A638EA56C3F5AD7590BBFBF054E1C7B4D91D628022F50458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6540" + } +} diff --git a/src/test/resources/Examples/RFC8152/Appendix_C_3_2.json b/src/test/resources/Examples/RFC8152/Appendix_C_3_2.json new file mode 100644 index 0000000..0deaa6b --- /dev/null +++ b/src/test/resources/Examples/RFC8152/Appendix_C_3_2.json @@ -0,0 +1,49 @@ +{ + "title":"Encryption example for spec - Direct ECDH", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-256" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh" + }, + "unsent":{ + "apu_id":"lighting-client", + "apv_id":"lighting-server", + "pub_other":"Encryption Example 02" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580933B5261A76C" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"C3B3584E0EC878C041281299EBE60D98", + "recipients":[ + { + "Context_hex":"840A834F6C69676874696E672D636C69656E74F6F6834F6C69676874696E672D736572766572F6F683188043A1012955456E6372797074696F6E204578616D706C65203032" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'89F52F65A1C580933B5261A76C'}, h'753548A19B1307084CA7B2056924ED95F2E3B17006DFE931B687B847', [[h'A10129', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010AA1054D89F52F65A1C580933B5261A76C581C753548A19B1307084CA7B2056924ED95F2E3B17006DFE931B687B847818343A10129A2335061616262636364646565666667676868044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/RFC8152/Appendix_C_3_3.json b/src/test/resources/Examples/RFC8152/Appendix_C_3_3.json new file mode 100644 index 0000000..05e7495 --- /dev/null +++ b/src/test/resources/Examples/RFC8152/Appendix_C_3_3.json @@ -0,0 +1,85 @@ +{ + "title":"Encryption example for spec - Direct ECDH", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "countersign":{ + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"sig", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ES512" + }, + "unprotected":{ + "kid":"bilbo.baggins@hobbiton.example" + } + } + ] + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example", + "epk":{ + "kty":"EC", + "crv":"P-256", + "x":"mPUKT_bAWGHIhg0TpjjqVsP1rXWQu_vwVOHHtNkdYoA", + "y":"8BQAsImGeAS46fyWw5MhYfGTT0IjBpFw2SS34Dv4Irs" + } + }, + "unsent":{ + "compressed": 1 + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3", + "C9CF4DF2FE6C632BF7886413" + ] + }, + "generated":{ + "iv":"yc9N8v5sYyv3iGQT926IUg" + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"56074D506729CA40C4B4FE50C6439893", + "recipients":[ + { + "Context_hex":"840183F6F6F683F6F6F682188044A1013818", + "Secret_hex":"4B31712E096E5F20B4ECF9790FD8CC7C8B7E2C8AD90BDA81CB224F62C0E7B9A6" + } + ], + "countersigners":[ + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1010144A10138234058247ADBE2709CA818FB415F1E5DF66F4E1A51053BA6D65A1A0C52A357DA7A644B8070A151B0" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'C9CF4DF2FE6C632BF7886413', 7: [h'A1013823', {4: h'62696C626F2E62616767696E7340686F626269746F6E2E6578616D706C65'}, h'00929663C8789BB28177AE28467E66377DA12302D7F9594D2999AFA5DFA531294F8896F2B6CDF1740014F4C7F1A358E3A6CF57F4ED6FB02FCF8F7AA989F5DFD07F0700A3A7D8F3C604BA70FA9411BD10C2591B483E1D2C31DE003183E434D8FBA18F17A4C7E3DFA003AC1CF3D30D44D2533C4989D3AC38C38B71481CC3430C9D65E7DDFF']}, h'7ADBE2709CA818FB415F1E5DF66F4E1A51053BA6D65A1A0C52A357DA7A644B8070A151B0', [[h'A1013818', {-1: {1: 2, -1: 1, -2: h'98F50A4FF6C05861C8860D13A638EA56C3F5AD7590BBFBF054E1C7B4D91D6280', -3: true}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'']]])", + "cbor":"D8608443A10101A2054CC9CF4DF2FE6C632BF7886413078344A1013823A104581E62696C626F2E62616767696E7340686F626269746F6E2E6578616D706C65588400929663C8789BB28177AE28467E66377DA12302D7F9594D2999AFA5DFA531294F8896F2B6CDF1740014F4C7F1A358E3A6CF57F4ED6FB02FCF8F7AA989F5DFD07F0700A3A7D8F3C604BA70FA9411BD10C2591B483E1D2C31DE003183E434D8FBA18F17A4C7E3DFA003AC1CF3D30D44D2533C4989D3AC38C38B71481CC3430C9D65E7DDFF58247ADBE2709CA818FB415F1E5DF66F4E1A51053BA6D65A1A0C52A357DA7A644B8070A151B0818344A1013818A220A40102200121582098F50A4FF6C05861C8860D13A638EA56C3F5AD7590BBFBF054E1C7B4D91D628022F50458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6540" + } +} diff --git a/src/test/resources/Examples/RFC8152/Appendix_C_3_4.json b/src/test/resources/Examples/RFC8152/Appendix_C_3_4.json new file mode 100644 index 0000000..1f3b309 --- /dev/null +++ b/src/test/resources/Examples/RFC8152/Appendix_C_3_4.json @@ -0,0 +1,60 @@ +{ + "title":"ENC-06: Encryption example for spec - Direct ECDH + A128 Key Wrap", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "external":"0011bbcc22dd44ee55ff660077", + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-SS+A128KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example", + "spk_kid":"peregrin.took@tuckborough.example", + "apu_nonce_hex":"0101" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-256", + "use":"enc", + "kid":"peregrin.took@tuckborough.example", + "x":"mPUKT_bAWGHIhg0TpjjqVsP1rXWQu_vwVOHHtNkdYoA", + "y":"8BQAsImGeAS46fyWw5MhYfGTT0IjBpFw2SS34Dv4Irs", + "d":"AtH35vJsQ9SGjYfOsjUxYXQKrPH3FjZHmEtSKoSN8cM" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A", + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A101014D0011BBCC22DD44EE55FF660077", + "CEK_hex":"B2353161740AACF1F7163647984B522A", + "recipients":[ + { + "Context_hex":"842283F6420101F683F6F6F682188044A101381F", + "Secret_hex":"4B31712E096E5F20B4ECF9790FD8CC7C8B7E2C8AD90BDA81CB224F62C0E7B9A6", + "KEK_hex":"381C67D48619D8880EAD76D9F793E860" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'64F84D913BA60A76070A9A48F26E97E863E28529D8F5335E5F0165EEE976B4A5F6C6F09D', [[h'A101381F', {-3: h'706572656772696E2E746F6F6B407475636B626F726F7567682E6578616D706C65', 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65', -22: h'0101'}, h'41E0D76F579DBD0D936A662D54D8582037DE2E366FDE1C62']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582464F84D913BA60A76070A9A48F26E97E863E28529D8F5335E5F0165EEE976B4A5F6C6F09D818344A101381FA3225821706572656772696E2E746F6F6B407475636B626F726F7567682E6578616D706C650458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6535420101581841E0D76F579DBD0D936A662D54D8582037DE2E366FDE1C62" + } +} diff --git a/src/test/resources/Examples/RFC8152/Appendix_C_4_1.json b/src/test/resources/Examples/RFC8152/Appendix_C_4_1.json new file mode 100644 index 0000000..4cd49f5 --- /dev/null +++ b/src/test/resources/Examples/RFC8152/Appendix_C_4_1.json @@ -0,0 +1,35 @@ +{ + "title":"Enc-04: Encryption example for spec - Direct ECDH", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret2", + "use":"enc", + "k":"hJtXhkV8FJG-Onbc6mxCcY" + }, + "unprotected":{ + "alg":"direct" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580933B5261A78C" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743043A1010A40", + "CEK_hex":"849B5786457C1491BE3A76DCEA6C4271" + }, + "output":{ + "cbor_diag":"16([h'A1010A', {5: h'89F52F65A1C580933B5261A78C'}, h'5974E1B99A3A4CC09A659AA2E9E7FFF161D38CE71CB45CE460FFB569'])", + "cbor":"D08343A1010AA1054D89F52F65A1C580933B5261A78C581C5974E1B99A3A4CC09A659AA2E9E7FFF161D38CE71CB45CE460FFB569" + } +} diff --git a/src/test/resources/Examples/RFC8152/Appendix_C_4_2.json b/src/test/resources/Examples/RFC8152/Appendix_C_4_2.json new file mode 100644 index 0000000..ba4ed3d --- /dev/null +++ b/src/test/resources/Examples/RFC8152/Appendix_C_4_2.json @@ -0,0 +1,38 @@ +{ + "title":"Encryption example for spec - Direct key - partial IV", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "unprotected":{ + "partialIV_hex":"61A7" + }, + "unsent":{ + "IV_hex":"89F52F65A1C5809300000061A7" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret2", + "use":"enc", + "k":"hJtXhkV8FJG-Onbc6mxCcY" + }, + "unprotected":{ + "alg":"direct" + } + } + ] + } + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743043A1010A40", + "CEK_hex":"849B5786457C1491BE3A76DCEA6C4271" + }, + "output":{ + "cbor_diag":"16([h'A1010A', {6: h'61A7'}, h'252A8911D465C125B6764739700F0141ED09192DE139E053BD09ABCA'])", + "cbor":"D08343A1010AA1064261A7581C252A8911D465C125B6764739700F0141ED09192DE139E053BD09ABCA" + } +} diff --git a/src/test/resources/Examples/RFC8152/Appendix_C_5_1.json b/src/test/resources/Examples/RFC8152/Appendix_C_5_1.json new file mode 100644 index 0000000..d8310d7 --- /dev/null +++ b/src/test/resources/Examples/RFC8152/Appendix_C_5_1.json @@ -0,0 +1,37 @@ +{ + "title":"MAC example with direct shared key and AES-CMAC/64", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "protected":{ + "alg":"AES-MAC-256/64" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A1010F4054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A1010F', {}, h'546869732069732074686520636F6E74656E742E', h'9E1226BA1F81B848', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A1010FA054546869732069732074686520636F6E74656E742E489E1226BA1F81B848818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/RFC8152/Appendix_C_5_2.json b/src/test/resources/Examples/RFC8152/Appendix_C_5_2.json new file mode 100644 index 0000000..0e82b14 --- /dev/null +++ b/src/test/resources/Examples/RFC8152/Appendix_C_5_2.json @@ -0,0 +1,55 @@ +{ + "title":"MAC example with direct ECDH static-static and HMAC-SHA256", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "protected":{ + "alg":"ECDH-SS" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example", + "spk_kid":"peregrin.took@tuckborough.example", + "apu_nonce_hex":"4d8553e7e74f3c6a3a9dd3ef286a8195cbf8a23d19558ccfec7d34b824f42d92bd06bd2c7f0271f0214e141fb779ae2856abf585a58368b017e7f2a9e5ce4db5" + }, + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "use":"enc", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-256", + "use":"enc", + "kid":"peregrin.took@tuckborough.example", + "x":"mPUKT_bAWGHIhg0TpjjqVsP1rXWQu_vwVOHHtNkdYoA", + "y":"8BQAsImGeAS46fyWw5MhYfGTT0IjBpFw2SS34Dv4Irs", + "d":"AtH35vJsQ9SGjYfOsjUxYXQKrPH3FjZHmEtSKoSN8cM" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"1C86606741D3C5C7683BD8767B5A6E6D7DDA6735C76DF3E885546E4BDCA838AB", + "recipients":[ + { + "Context_hex":"840583F658404D8553E7E74F3C6A3A9DD3EF286A8195CBF8A23D19558CCFEC7D34B824F42D92BD06BD2C7F0271F0214E141FB779AE2856ABF585A58368B017E7F2A9E5CE4DB5F683F6F6F68219010044A101381A", + "Secret_hex":"4B31712E096E5F20B4ECF9790FD8CC7C8B7E2C8AD90BDA81CB224F62C0E7B9A6" + } + ] + }, + "output":{ + "cbor_diag":"97([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'81A03448ACD3D305376EAA11FB3FE416A955BE2CBE7EC96F012C994BC3F16A41', [[h'A101381A', {-3: h'706572656772696E2E746F6F6B407475636B626F726F7567682E6578616D706C65', 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65', -22: h'4D8553E7E74F3C6A3A9DD3EF286A8195CBF8A23D19558CCFEC7D34B824F42D92BD06BD2C7F0271F0214E141FB779AE2856ABF585A58368B017E7F2A9E5CE4DB5'}, h'']]])", + "cbor":"D8618543A10105A054546869732069732074686520636F6E74656E742E582081A03448ACD3D305376EAA11FB3FE416A955BE2CBE7EC96F012C994BC3F16A41818344A101381AA3225821706572656772696E2E746F6F6B407475636B626F726F7567682E6578616D706C650458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C653558404D8553E7E74F3C6A3A9DD3EF286A8195CBF8A23D19558CCFEC7D34B824F42D92BD06BD2C7F0271F0214E141FB779AE2856ABF585A58368B017E7F2A9E5CE4DB540" + } +} diff --git a/src/test/resources/Examples/RFC8152/Appendix_C_5_3.json b/src/test/resources/Examples/RFC8152/Appendix_C_5_3.json new file mode 100644 index 0000000..22b702e --- /dev/null +++ b/src/test/resources/Examples/RFC8152/Appendix_C_5_3.json @@ -0,0 +1,40 @@ +{ + "title":"MAC example with AES Keywrap from a direct shared secret and AES-128-CBC-MAC-64", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "protected":{ + "alg":"AES-MAC-128/64" + }, + "recipients":[ + { + "unprotected":{ + "kid":"018c0ae5-4d9b-471b-bfd6-eef314bc7037", + "alg":"A256KW" + }, + "key":{ + "kty":"oct", + "kid":"018c0ae5-4d9b-471b-bfd6-eef314bc7037", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "rng_stream":[ + "DDDC08972DF9BE62855291A17A1B4CF7" + ] + }, + "intermediates":{ + "ToMac_hex":"84634D414343A1010E4054546869732069732074686520636F6E74656E742E", + "CEK_hex":"DDDC08972DF9BE62855291A17A1B4CF7", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A1010E', {}, h'546869732069732074686520636F6E74656E742E', h'36F5AFAF0BAB5D43', [[h'', {1: -5, 4: h'30313863306165352D346439622D343731622D626664362D656566333134626337303337'}, h'711AB0DC2FC4585DCE27EFFA6781C8093EBA906F227B6EB0']]])", + "cbor":"D8618543A1010EA054546869732069732074686520636F6E74656E742E4836F5AFAF0BAB5D43818340A2012404582430313863306165352D346439622D343731622D626664362D6565663331346263373033375818711AB0DC2FC4585DCE27EFFA6781C8093EBA906F227B6EB0" + } +} diff --git a/src/test/resources/Examples/RFC8152/Appendix_C_5_4.json b/src/test/resources/Examples/RFC8152/Appendix_C_5_4.json new file mode 100644 index 0000000..283a829 --- /dev/null +++ b/src/test/resources/Examples/RFC8152/Appendix_C_5_4.json @@ -0,0 +1,64 @@ +{ + "title":"MAC example with multiple recipients", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-ES+A128KW" + + }, + "unsent":{ + "compressed": 1 + } + }, + { + "unprotected":{ + "kid":"018c0ae5-4d9b-471b-bfd6-eef314bc7037", + "alg":"A256KW" + }, + "key":{ + "kty":"oct", + "kid":"018c0ae5-4d9b-471b-bfd6-eef314bc7037", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "rng_stream":[ + "2B7459201E5046E33FDB514C5E14A1B01D9893F8936335F821FCB1AFF450B226", + "242773DB895E3E88FFE52628782CCD0C7457D91CCD1DAEE5A76C34F197DFD677E308F7620394503834DDDE67F5D823B9881A0A6A067FFAF10AC05DAE0AF7CCD07542" + ] + }, + "intermediates":{ + "ToMac_hex":"84634D414343A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"2B7459201E5046E33FDB514C5E14A1B01D9893F8936335F821FCB1AFF450B226", + "recipients":[ + { + "Context_hex":"842283F6F6F683F6F6F682188044A101381C", + "Secret_hex":"000624B09A73EAD64AE07C0EBDA18126F02C80720DA239C8643198DBC1A10F967E5183D915678503CB78808F831AED26FF7D0F1E638AC58CD398E2AD00AC8A9B56E6", + "KEK_hex":"5616902BF2724077A3EC013EAE1E98E5" + }, + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'BF48235E809B5C42E995F2B7D5FA13620E7ED834E337F6AA43DF161E49E9323E', [[h'A101381C', {-1: {1: 2, -1: 3, -2: h'0043B12669ACAC3FD27898FFBA0BCD2E6C366D53BC4DB71F909A759304ACFB5E18CDC7BA0B13FF8C7636271A6924B1AC63C02688075B55EF2D613574E7DC242F79C3', -3: true}, 4: h'62696C626F2E62616767696E7340686F626269746F6E2E6578616D706C65'}, h'339BC4F79984CDC6B3E6CE5F315A4C7D2B0AC466FCEA69E8C07DFBCA5BB1F661BC5F8E0DF9E3EFF5'], [h'', {1: -5, 4: h'30313863306165352D346439622D343731622D626664362D656566333134626337303337'}, h'0B2C7CFCE04E98276342D6476A7723C090DFDD15F9A518E7736549E998370695E6D6A83B4AE507BB']]])", + "cbor":"D8618543A10105A054546869732069732074686520636F6E74656E742E5820BF48235E809B5C42E995F2B7D5FA13620E7ED834E337F6AA43DF161E49E9323E828344A101381CA220A4010220032158420043B12669ACAC3FD27898FFBA0BCD2E6C366D53BC4DB71F909A759304ACFB5E18CDC7BA0B13FF8C7636271A6924B1AC63C02688075B55EF2D613574E7DC242F79C322F504581E62696C626F2E62616767696E7340686F626269746F6E2E6578616D706C655828339BC4F79984CDC6B3E6CE5F315A4C7D2B0AC466FCEA69E8C07DFBCA5BB1F661BC5F8E0DF9E3EFF58340A2012404582430313863306165352D346439622D343731622D626664362D65656633313462633730333758280B2C7CFCE04E98276342D6476A7723C090DFDD15F9A518E7736549E998370695E6D6A83B4AE507BB" + } +} diff --git a/src/test/resources/Examples/RFC8152/Appendix_C_6_1.json b/src/test/resources/Examples/RFC8152/Appendix_C_6_1.json new file mode 100644 index 0000000..3eee576 --- /dev/null +++ b/src/test/resources/Examples/RFC8152/Appendix_C_6_1.json @@ -0,0 +1,33 @@ +{ + "title":"MAC0 example with direct shared key and AES-MAC/64", + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "protected":{ + "alg":"AES-MAC-256/64" + }, + "recipients":[ + { + "unprotected":{ + "kid":"our-secret", + "alg":"direct" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A1010F4054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188" + }, + "output":{ + "cbor_diag":"17([h'A1010F', {}, h'546869732069732074686520636F6E74656E742E', h'726043745027214F'])", + "cbor":"D18443A1010FA054546869732069732074686520636F6E74656E742E48726043745027214F" + } +} diff --git a/src/test/resources/Examples/X25519-tests/x25519-hkdf-256-direct.json b/src/test/resources/Examples/X25519-tests/x25519-hkdf-256-direct.json new file mode 100644 index 0000000..2ff981e --- /dev/null +++ b/src/test/resources/Examples/X25519-tests/x25519-hkdf-256-direct.json @@ -0,0 +1,46 @@ +{ + "title":"X25519-hkdf-256-direct-01: X25519 direct w/ hkdf-sha-256 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"OKP", + "kid":"X25519-1", + "crv":"X25519", + "x_hex":"7FFE91F5F932DAE92BE603F55FAC0F4C4C9328906EE550EDCB7F6F7626EBC07E", + "d_hex":"00a943daa2e38b2edbf0da0434eaaec6016fe25dcd5ecacbc07dc30300567655" + }, + "protected":{ + "alg":"ECDH-ES" + }, + "unprotected":{ + "kid":"X25519-1" + } + } + ] + }, + "rng_stream":[ + "1A553C409EF9DBB9249D91C464E68D9B092B20CAA028CEEC05D0F86FC314CA82", + "9862E02EC874A0DF9FB12338" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"52291DE41342AC0AC2E31867A1423ACB", + "recipients":[ + { + "Context_hex":"840183F6F6F683F6F6F682188044A1013818", + "Secret_hex":"C2E9009387087408523B5603D1BA5245FD95758D656C4440A82C34DB45CD0D5E" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'9862E02EC874A0DF9FB12338'}, h'D2B07042F7BA47C61646CCA83AB97FD23AF21F0D2AC75DCB47A9FC293015D8F098AE9C1B', [[h'A1013818', {-1: {1: 1, -1: 4, -2: h'72FC171C21BF5C682C64D2EF3A71AC877B40013D3754F63D4C3C3A965F1BA776'}, 4: h'5832353531392D31'}, h'']]])", + "cbor":"D8608443A10101A1054C9862E02EC874A0DF9FB123385824D2B07042F7BA47C61646CCA83AB97FD23AF21F0D2AC75DCB47A9FC293015D8F098AE9C1B818344A1013818A220A30101200421582072FC171C21BF5C682C64D2EF3A71AC877B40013D3754F63D4C3C3A965F1BA77604485832353531392D3140" + } +} diff --git a/src/test/resources/Examples/X25519-tests/x25519-ss-hkdf-256-direct.json b/src/test/resources/Examples/X25519-tests/x25519-ss-hkdf-256-direct.json new file mode 100644 index 0000000..6fe8565 --- /dev/null +++ b/src/test/resources/Examples/X25519-tests/x25519-ss-hkdf-256-direct.json @@ -0,0 +1,53 @@ +{ + "title":"X25519-ss-hkdf-256-direct-01: X25519 direct w/ hkdf-sha-256 for 128-bit key - static sender", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"OKP", + "kid":"X25519-bob", + "crv":"X25519", + "x_hex":"DE9EDB7D7B7DC1B4D35B61C2ECE435373F8343C85B78674DADFC7E146F882B4F", + "d_hex":"58AB087E624A8A4B79E17F8B83800EE66F3BB1292618B6FD1C2F8B27FF88E06B" + }, + "protected":{ + "alg":"ECDH-SS" + }, + "unprotected":{ + "kid":"X25519-bob" + }, + "sender_key":{ + "kty":"OKP", + "kid":"X25519-alice", + "crv":"X25519", + "x_hex":"8520F0098930A754748B7DDCB43EF75A0DBF3A0D26381AF4EBA4A98EAA9B4E6A", + "d_hex":"70076D0A7318A57D3C16C17251B26645DF4C2F87EBC0992AB177FBA51DB92C6A" + } + } + ] + }, + "rng_stream":[ + "607A92A41974DF0CB967E1C395B21F557469379E011781B6BE9189F40ADFECE4715AB87A79B36FB20913240FBB833FAB14B6A72A232A3CB18D1996A16256E445", + "CDA8E5632E1501A698960E2B" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"1B0CF3522225D68331E58F7B021BAF2D", + "recipients":[ + { + "Context_hex":"840183F65840607A92A41974DF0CB967E1C395B21F557469379E011781B6BE9189F40ADFECE4715AB87A79B36FB20913240FBB833FAB14B6A72A232A3CB18D1996A16256E445F683F6F6F682188044A101381A", + "Secret_hex":"4A5D9D5BA4CE2DE1728E3BF480350F25E07E21C947D19E3376F09B3C1E161742" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'CDA8E5632E1501A698960E2B'}, h'60F0E32B4E511A964DFA671D95F00463D094EDC3FCB3DF782C0EDEDDD9436FB8CC79F482', [[h'A101381A', {-3: h'5832353531392D616C696365', 4: h'5832353531392D626F62', -22: h'607A92A41974DF0CB967E1C395B21F557469379E011781B6BE9189F40ADFECE4715AB87A79B36FB20913240FBB833FAB14B6A72A232A3CB18D1996A16256E445'}, h'']]])", + "cbor":"D8608443A10101A1054CCDA8E5632E1501A698960E2B582460F0E32B4E511A964DFA671D95F00463D094EDC3FCB3DF782C0EDEDDD9436FB8CC79F482818344A101381AA3224C5832353531392D616C696365044A5832353531392D626F62355840607A92A41974DF0CB967E1C395B21F557469379E011781B6BE9189F40ADFECE4715AB87A79B36FB20913240FBB833FAB14B6A72A232A3CB18D1996A16256E44540" + } +} diff --git a/src/test/resources/Examples/aes-ccm-examples/aes-ccm-01.json b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-01.json new file mode 100644 index 0000000..71255d4 --- /dev/null +++ b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-01.json @@ -0,0 +1,40 @@ +{ + "title":"AES-CCM-01: Encrypt w/ AES-CCM 16-128/64 - direct", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580933B5261A72F" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E" + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'89F52F65A1C580933B5261A72F'}, h'6899DA0A132BD2D2B9B10915743EE1F7B92A46802388816C040275EE', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010AA1054D89F52F65A1C580933B5261A72F581C6899DA0A132BD2D2B9B10915743EE1F7B92A46802388816C040275EE818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/aes-ccm-examples/aes-ccm-02.json b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-02.json new file mode 100644 index 0000000..af6dfdd --- /dev/null +++ b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-02.json @@ -0,0 +1,40 @@ +{ + "title":"AES-CCM-02: Encrypt w/ AES-CCM 16-128/128 - direct", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/128" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580933B5261A72F" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8367456E637279707444A101181E40", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E" + }, + "output":{ + "cbor_diag":"96([h'A101181E', {5: h'89F52F65A1C580933B5261A72F'}, h'6899DA0A132BD2D2B9B10915743EE1F7B92A46801D3D61B6E7C964520652F9D3C8347E8A', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608444A101181EA1054D89F52F65A1C580933B5261A72F58246899DA0A132BD2D2B9B10915743EE1F7B92A46801D3D61B6E7C964520652F9D3C8347E8A818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/aes-ccm-examples/aes-ccm-03.json b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-03.json new file mode 100644 index 0000000..5850b40 --- /dev/null +++ b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-03.json @@ -0,0 +1,40 @@ +{ + "title":"AES-CCM-03: Encrypt w/ AES-CCM 64-128/64 - direct", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-64-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8367456E637279707443A1010C40", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E" + }, + "output":{ + "cbor_diag":"96([h'A1010C', {5: h'89F52F65A1C580'}, h'191BD858DEC79FC11DA3428BDFA446AC240D591F9F0F25E3A3FA4E6C', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010CA1054789F52F65A1C580581C191BD858DEC79FC11DA3428BDFA446AC240D591F9F0F25E3A3FA4E6C818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/aes-ccm-examples/aes-ccm-04.json b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-04.json new file mode 100644 index 0000000..464bac2 --- /dev/null +++ b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-04.json @@ -0,0 +1,40 @@ +{ + "title":"AES-CCM-04: Encrypt w/ AES-CCM 64-128/128 - direct", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-64-128/128" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8367456E637279707444A101182040", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E" + }, + "output":{ + "cbor_diag":"96([h'A1011820', {5: h'89F52F65A1C580'}, h'191BD858DEC79FC11DA3428BDFA446AC240D591F59482AEA4157167842D7BF5EDD68EC92', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608444A1011820A1054789F52F65A1C5805824191BD858DEC79FC11DA3428BDFA446AC240D591F59482AEA4157167842D7BF5EDD68EC92818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/aes-ccm-examples/aes-ccm-05.json b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-05.json new file mode 100644 index 0000000..ae7f4e0 --- /dev/null +++ b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-05.json @@ -0,0 +1,40 @@ +{ + "title":"AES-CCM-05: Encrypt w/ AES-CCM 16-256/64 - direct", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-256/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580933B5261A72F" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8367456E637279707443A1010B40", + "CEK_hex":"0F1E2D3C4B5A69788796A5B4C3D2E1F01F2E3D4C5B6A798897A6B5C4D3E2F100" + }, + "output":{ + "cbor_diag":"96([h'A1010B', {5: h'89F52F65A1C580933B5261A72F'}, h'28B3BDDFF844A736C5F0EE0F8C691FD0B7ADF917A8A3EF3313D6D332', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010BA1054D89F52F65A1C580933B5261A72F581C28B3BDDFF844A736C5F0EE0F8C691FD0B7ADF917A8A3EF3313D6D332818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/aes-ccm-examples/aes-ccm-06.json b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-06.json new file mode 100644 index 0000000..8c8b4dc --- /dev/null +++ b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-06.json @@ -0,0 +1,40 @@ +{ + "title":"AES-CCM-06: Encrypt w/ AES-CCM 16-256/128 - direct", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-256/128" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580933B5261A72F" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8367456E637279707444A101181F40", + "CEK_hex":"0F1E2D3C4B5A69788796A5B4C3D2E1F01F2E3D4C5B6A798897A6B5C4D3E2F100" + }, + "output":{ + "cbor_diag":"96([h'A101181F', {5: h'89F52F65A1C580933B5261A72F'}, h'28B3BDDFF844A736C5F0EE0F8C691FD0B7ADF917348CDDC1FD07F3653AD991F9DFB65D50', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608444A101181FA1054D89F52F65A1C580933B5261A72F582428B3BDDFF844A736C5F0EE0F8C691FD0B7ADF917348CDDC1FD07F3653AD991F9DFB65D50818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/aes-ccm-examples/aes-ccm-07.json b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-07.json new file mode 100644 index 0000000..1d99e65 --- /dev/null +++ b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-07.json @@ -0,0 +1,40 @@ +{ + "title":"AES-CCM-07: Encrypt w/ AES-CCM 64-256/64 - direct", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-64-256/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8367456E637279707443A1010D40", + "CEK_hex":"0F1E2D3C4B5A69788796A5B4C3D2E1F01F2E3D4C5B6A798897A6B5C4D3E2F100" + }, + "output":{ + "cbor_diag":"96([h'A1010D', {5: h'89F52F65A1C580'}, h'721908D60812806F2660054238E931ADB575771EE26C547EC3DE06C5', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010DA1054789F52F65A1C580581C721908D60812806F2660054238E931ADB575771EE26C547EC3DE06C5818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/aes-ccm-examples/aes-ccm-08.json b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-08.json new file mode 100644 index 0000000..84dd59b --- /dev/null +++ b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-08.json @@ -0,0 +1,40 @@ +{ + "title":"AES-CCM-08: Encrypt w/ AES-CCM 64-256/128 - direct", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-64-256/128" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8367456E637279707444A101182140", + "CEK_hex":"0F1E2D3C4B5A69788796A5B4C3D2E1F01F2E3D4C5B6A798897A6B5C4D3E2F100" + }, + "output":{ + "cbor_diag":"96([h'A1011821', {5: h'89F52F65A1C580'}, h'721908D60812806F2660054238E931ADB575771EB58752E5F0FB62A828917386A770CE9C', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608444A1011821A1054789F52F65A1C5805824721908D60812806F2660054238E931ADB575771EB58752E5F0FB62A828917386A770CE9C818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-01.json b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-01.json new file mode 100644 index 0000000..15aabf1 --- /dev/null +++ b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-01.json @@ -0,0 +1,40 @@ +{ + "title":"AES-CCM-ENC-01: Encrypt w/ AES-CCM 16-128/64 - implicit", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580933B5261A72F" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8368456E63727970743043A1010A40", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E" + }, + "output":{ + "cbor_diag":"16([h'A1010A', {5: h'89F52F65A1C580933B5261A72F'}, h'6899DA0A132BD2D2B9B10915743EE1F7B92A4680E7C51BDBC1B320EA'])", + "cbor":"D08343A1010AA1054D89F52F65A1C580933B5261A72F581C6899DA0A132BD2D2B9B10915743EE1F7B92A4680E7C51BDBC1B320EA" + } +} diff --git a/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-02.json b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-02.json new file mode 100644 index 0000000..d30b779 --- /dev/null +++ b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-02.json @@ -0,0 +1,40 @@ +{ + "title":"AES-CCM-ENC-02: Encrypt w/ AES-CCM 16-128/128 - implicit", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"AES-CCM-16-128/128" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580933B5261A72F" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8368456E63727970743044A101181E40", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E" + }, + "output":{ + "cbor_diag":"16([h'A101181E', {5: h'89F52F65A1C580933B5261A72F'}, h'6899DA0A132BD2D2B9B10915743EE1F7B92A4680903F2C00D37E14D4EBDC7EF2C03CF5A9'])", + "cbor":"D08344A101181EA1054D89F52F65A1C580933B5261A72F58246899DA0A132BD2D2B9B10915743EE1F7B92A4680903F2C00D37E14D4EBDC7EF2C03CF5A9" + } +} diff --git a/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-03.json b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-03.json new file mode 100644 index 0000000..c896142 --- /dev/null +++ b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-03.json @@ -0,0 +1,40 @@ +{ + "title":"AES-CCM-ENC-03: Encrypt w/ AES-CCM 64-128/64 - implicit", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"AES-CCM-64-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8368456E63727970743043A1010C40", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E" + }, + "output":{ + "cbor_diag":"16([h'A1010C', {5: h'89F52F65A1C580'}, h'191BD858DEC79FC11DA3428BDFA446AC240D591FFCF91EEB8035F87A'])", + "cbor":"D08343A1010CA1054789F52F65A1C580581C191BD858DEC79FC11DA3428BDFA446AC240D591FFCF91EEB8035F87A" + } +} diff --git a/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-04.json b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-04.json new file mode 100644 index 0000000..3b695c3 --- /dev/null +++ b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-04.json @@ -0,0 +1,40 @@ +{ + "title":"AES-CCM-ENC-04: Encrypt w/ AES-CCM 64-128/128 - implicit", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"AES-CCM-64-128/128" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8368456E63727970743044A101182040", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E" + }, + "output":{ + "cbor_diag":"16([h'A1011820', {5: h'89F52F65A1C580'}, h'191BD858DEC79FC11DA3428BDFA446AC240D591F3965FA7CA156FE666BC262807DF0EE99'])", + "cbor":"D08344A1011820A1054789F52F65A1C5805824191BD858DEC79FC11DA3428BDFA446AC240D591F3965FA7CA156FE666BC262807DF0EE99" + } +} diff --git a/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-05.json b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-05.json new file mode 100644 index 0000000..b3d7e73 --- /dev/null +++ b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-05.json @@ -0,0 +1,40 @@ +{ + "title":"AES-CCM-ENC-05: Encrypt w/ AES-CCM 16-256/64 - implicit", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"AES-CCM-16-256/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580933B5261A72F" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8368456E63727970743043A1010B40", + "CEK_hex":"0F1E2D3C4B5A69788796A5B4C3D2E1F01F2E3D4C5B6A798897A6B5C4D3E2F100" + }, + "output":{ + "cbor_diag":"16([h'A1010B', {5: h'89F52F65A1C580933B5261A72F'}, h'28B3BDDFF844A736C5F0EE0F8C691FD0B7ADF9173140CB621DF47C2F'])", + "cbor":"D08343A1010BA1054D89F52F65A1C580933B5261A72F581C28B3BDDFF844A736C5F0EE0F8C691FD0B7ADF9173140CB621DF47C2F" + } +} diff --git a/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-06.json b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-06.json new file mode 100644 index 0000000..650ab38 --- /dev/null +++ b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-06.json @@ -0,0 +1,40 @@ +{ + "title":"AES-CCM-ENC-06: Encrypt w/ AES-CCM 16-256/128 - implicit", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"AES-CCM-16-256/128" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580933B5261A72F" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8368456E63727970743044A101181F40", + "CEK_hex":"0F1E2D3C4B5A69788796A5B4C3D2E1F01F2E3D4C5B6A798897A6B5C4D3E2F100" + }, + "output":{ + "cbor_diag":"16([h'A101181F', {5: h'89F52F65A1C580933B5261A72F'}, h'28B3BDDFF844A736C5F0EE0F8C691FD0B7ADF917B0CFA0D187C769A4BA100372A585BCCC'])", + "cbor":"D08344A101181FA1054D89F52F65A1C580933B5261A72F582428B3BDDFF844A736C5F0EE0F8C691FD0B7ADF917B0CFA0D187C769A4BA100372A585BCCC" + } +} diff --git a/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-07.json b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-07.json new file mode 100644 index 0000000..2941521 --- /dev/null +++ b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-07.json @@ -0,0 +1,40 @@ +{ + "title":"AES-CCM-ENC-07: Encrypt w/ AES-CCM 64-256/64 - implicit", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"AES-CCM-64-256/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8368456E63727970743043A1010D40", + "CEK_hex":"0F1E2D3C4B5A69788796A5B4C3D2E1F01F2E3D4C5B6A798897A6B5C4D3E2F100" + }, + "output":{ + "cbor_diag":"16([h'A1010D', {5: h'89F52F65A1C580'}, h'721908D60812806F2660054238E931ADB575771E9BC42FF530BAEB00'])", + "cbor":"D08343A1010DA1054789F52F65A1C580581C721908D60812806F2660054238E931ADB575771E9BC42FF530BAEB00" + } +} diff --git a/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-08.json b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-08.json new file mode 100644 index 0000000..0532640 --- /dev/null +++ b/src/test/resources/Examples/aes-ccm-examples/aes-ccm-enc-08.json @@ -0,0 +1,40 @@ +{ + "title":"AES-CCM-ENC-08: Encrypt w/ AES-CCM 64-256/128 - implicit", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"AES-CCM-64-256/128" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "89F52F65A1C580" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8368456E63727970743044A101182140", + "CEK_hex":"0F1E2D3C4B5A69788796A5B4C3D2E1F01F2E3D4C5B6A798897A6B5C4D3E2F100" + }, + "output":{ + "cbor_diag":"16([h'A1011821', {5: h'89F52F65A1C580'}, h'721908D60812806F2660054238E931ADB575771E723C6FFD415A07CDB9FA9CEECC6C81FC'])", + "cbor":"D08344A1011821A1054789F52F65A1C5805824721908D60812806F2660054238E931ADB575771E723C6FFD415A07CDB9FA9CEECC6C81FC" + } +} diff --git a/src/test/resources/Examples/aes-gcm-examples/aes-gcm-01.json b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-01.json new file mode 100644 index 0000000..55e6ce3 --- /dev/null +++ b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-01.json @@ -0,0 +1,40 @@ +{ + "title":"AES-GCM-01: Encryption example for spec - ", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/aes-gcm-examples/aes-gcm-02.json b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-02.json new file mode 100644 index 0000000..6b35329 --- /dev/null +++ b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-02.json @@ -0,0 +1,40 @@ +{ + "title":"AES-GCM-02: Encryption example for spec - ", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A192GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-192", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmI" + }, + "unprotected":{ + "alg":"direct", + "kid":"sec-48" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010240", + "CEK_hex":"0F1E2D3C4B5A69788796A5B4C3D2E1F01F2E3D4C5B6A7988", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10102', {5: h'02D1F7E6F26C43D4868D87CE'}, h'134D3B9223A00C1552C77585C157F467F295919D12124F19F521484C0725410947B4D1CA', [[h'', {1: -6, 4: h'7365632D3438'}, h'']]])", + "cbor":"D8608443A10102A1054C02D1F7E6F26C43D4868D87CE5824134D3B9223A00C1552C77585C157F467F295919D12124F19F521484C0725410947B4D1CA818340A2012504467365632D343840" + } +} diff --git a/src/test/resources/Examples/aes-gcm-examples/aes-gcm-03.json b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-03.json new file mode 100644 index 0000000..f04384b --- /dev/null +++ b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-03.json @@ -0,0 +1,40 @@ +{ + "title":"AES-GCM-03: Encryption example for spec - ", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "unprotected":{ + "alg":"direct", + "kid":"sec-64" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"0F1E2D3C4B5A69788796A5B4C3D2E1F01F2E3D4C5B6A798897A6B5C4D3E2F100", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'02D1F7E6F26C43D4868D87CE'}, h'9D64A5A59A3B04867DCCF6B8EF82F7D1A3B25EF862B6EDDB29DF2EF16582172E5B5FC757', [[h'', {1: -6, 4: h'7365632D3634'}, h'']]])", + "cbor":"D8608443A10103A1054C02D1F7E6F26C43D4868D87CE58249D64A5A59A3B04867DCCF6B8EF82F7D1A3B25EF862B6EDDB29DF2EF16582172E5B5FC757818340A2012504467365632D363440" + } +} diff --git a/src/test/resources/Examples/aes-gcm-examples/aes-gcm-04.json b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-04.json new file mode 100644 index 0000000..0d3a333 --- /dev/null +++ b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-04.json @@ -0,0 +1,44 @@ +{ + "title":"AES-GCM-04: Encryption example for spec - Fail the tag", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "ChangeTag":1 + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FD', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FD818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/aes-gcm-examples/aes-gcm-05.json b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-05.json new file mode 100644 index 0000000..4601939 --- /dev/null +++ b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-05.json @@ -0,0 +1,43 @@ +{ + "title":"AES-GCM-05: Encryption partial IV", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "unprotected":{ + "partialIV_hex":"61A7" + }, + "unsent":{ + "IV_hex":"89F52F65A1C58093000061A7" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + } + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {6: h'61A7'}, h'D3D893DFF22BDCF09A58CBBE701371AEE31EE0AA3C1C8A6CE8409D5E5E81A6B5C355A644', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A10101A1064261A75824D3D893DFF22BDCF09A58CBBE701371AEE31EE0AA3C1C8A6CE8409D5E5E81A6B5C355A644818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/aes-gcm-examples/aes-gcm-enc-01.json b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-enc-01.json new file mode 100644 index 0000000..5108130 --- /dev/null +++ b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-enc-01.json @@ -0,0 +1,40 @@ +{ + "title":"AES-GCM-ENC-01: Encryption example for spec - implicit", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743043A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"16([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A'])", + "cbor":"D08343A10101A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A" + } +} diff --git a/src/test/resources/Examples/aes-gcm-examples/aes-gcm-enc-02.json b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-enc-02.json new file mode 100644 index 0000000..4d74603 --- /dev/null +++ b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-enc-02.json @@ -0,0 +1,40 @@ +{ + "title":"AES-GCM-ENC-02: Encryption example for spec - implicit", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"A192GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-192", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmI" + }, + "unprotected":{ + "alg":"direct", + "kid":"sec-48" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743043A1010240", + "CEK_hex":"0F1E2D3C4B5A69788796A5B4C3D2E1F01F2E3D4C5B6A7988", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"16([h'A10102', {5: h'02D1F7E6F26C43D4868D87CE'}, h'134D3B9223A00C1552C77585C157F467F295919D530FBE21F7689AB3CD4D18FFE8E17CEB'])", + "cbor":"D08343A10102A1054C02D1F7E6F26C43D4868D87CE5824134D3B9223A00C1552C77585C157F467F295919D530FBE21F7689AB3CD4D18FFE8E17CEB" + } +} diff --git a/src/test/resources/Examples/aes-gcm-examples/aes-gcm-enc-03.json b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-enc-03.json new file mode 100644 index 0000000..f0b1e3b --- /dev/null +++ b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-enc-03.json @@ -0,0 +1,40 @@ +{ + "title":"AES-GCM-ENC-03: Encryption example for spec - implicit", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "unprotected":{ + "alg":"direct", + "kid":"sec-64" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743043A1010340", + "CEK_hex":"0F1E2D3C4B5A69788796A5B4C3D2E1F01F2E3D4C5B6A798897A6B5C4D3E2F100", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"16([h'A10103', {5: h'02D1F7E6F26C43D4868D87CE'}, h'9D64A5A59A3B04867DCCF6B8EF82F7D1A3B25EF84ECA2BC5D7593A96E943859A9CC24AD3'])", + "cbor":"D08343A10103A1054C02D1F7E6F26C43D4868D87CE58249D64A5A59A3B04867DCCF6B8EF82F7D1A3B25EF84ECA2BC5D7593A96E943859A9CC24AD3" + } +} diff --git a/src/test/resources/Examples/aes-gcm-examples/aes-gcm-enc-04.json b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-enc-04.json new file mode 100644 index 0000000..bcb0ea7 --- /dev/null +++ b/src/test/resources/Examples/aes-gcm-examples/aes-gcm-enc-04.json @@ -0,0 +1,44 @@ +{ + "title":"AES-GCM-ENC-04: Encryption example for spec - implicit - Fail the tag", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "ChangeTag":1 + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743043A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"16([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250B'])", + "cbor":"D08343A10101A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250B" + } +} diff --git a/src/test/resources/Examples/aes-wrap-examples/aes-wrap-128-01.json b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-128-01.json new file mode 100644 index 0000000..2b81f2e --- /dev/null +++ b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-128-01.json @@ -0,0 +1,41 @@ +{ + "title":"aes-wrap-128-01: 128-bit key wrap for 128-bit MAC", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"AES-MAC-128/64", + "protected":{ + "alg":"AES-MAC-128/64" + }, + "recipients":[ + { + "unprotected":{ + "kid":"our-secret", + "alg":"A128KW" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + } + } + ] + }, + "rng_stream":[ + "DDDC08972DF9BE62855291A17A1B4CF7" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "ToMac_hex":"84634D414343A1010E4054546869732069732074686520636F6E74656E742E", + "CEK_hex":"DDDC08972DF9BE62855291A17A1B4CF7" + }, + "output":{ + "cbor_diag":"97([h'A1010E', {}, h'546869732069732074686520636F6E74656E742E', h'36F5AFAF0BAB5D43', [[h'', {1: -3, 4: h'6F75722D736563726574'}, h'2F8A3D2AA397D3D5C40AAF9F6656BAFA5DB714EF925B72BC']]])", + "cbor":"D8618543A1010EA054546869732069732074686520636F6E74656E742E4836F5AFAF0BAB5D43818340A20122044A6F75722D73656372657458182F8A3D2AA397D3D5C40AAF9F6656BAFA5DB714EF925B72BC" + } +} diff --git a/src/test/resources/Examples/aes-wrap-examples/aes-wrap-128-02.json b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-128-02.json new file mode 100644 index 0000000..2904e30 --- /dev/null +++ b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-128-02.json @@ -0,0 +1,41 @@ +{ + "title":"wrap-128-02: 128-bit key wrap for 256-bit MAC", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"AES-MAC-256/64", + "protected":{ + "alg":"AES-MAC-256/64" + }, + "recipients":[ + { + "unprotected":{ + "kid":"our-secret", + "alg":"A128KW" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + } + } + ] + }, + "rng_stream":[ + "DDDC08972DF9BE62855291A17A1B4CF7F32AB2CCC0FB84237E55B4280DCA5EA4" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "ToMac_hex":"84634D414343A1010F4054546869732069732074686520636F6E74656E742E", + "CEK_hex":"DDDC08972DF9BE62855291A17A1B4CF7F32AB2CCC0FB84237E55B4280DCA5EA4" + }, + "output":{ + "cbor_diag":"97([h'A1010F', {}, h'546869732069732074686520636F6E74656E742E', h'BC099BCBDB51AF62', [[h'', {1: -3, 4: h'6F75722D736563726574'}, h'CBF83C6935F064FAA9681ACFC3936D8A6CE1AB64777D581ACA4BBBFEC3C32206A63056C993C6E609']]])", + "cbor":"D8618543A1010FA054546869732069732074686520636F6E74656E742E48BC099BCBDB51AF62818340A20122044A6F75722D7365637265745828CBF83C6935F064FAA9681ACFC3936D8A6CE1AB64777D581ACA4BBBFEC3C32206A63056C993C6E609" + } +} diff --git a/src/test/resources/Examples/aes-wrap-examples/aes-wrap-128-03.json b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-128-03.json new file mode 100644 index 0000000..e4cdfbe --- /dev/null +++ b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-128-03.json @@ -0,0 +1,41 @@ +{ + "title":"wrap-128-03: 128-bit key wrap for 512-bit MAC", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "unprotected":{ + "kid":"our-secret", + "alg":"A128KW" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + } + } + ] + }, + "rng_stream":[ + "DDDC08972DF9BE62855291A17A1B4CF767C2DC762CB551911893BF7754988B0A286127BFF5D60C4CBC877CAC4BF3BA02C07AD544C951C3CA2FC46B70219BC3DC" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E", + "CEK_hex":"DDDC08972DF9BE62855291A17A1B4CF767C2DC762CB551911893BF7754988B0A286127BFF5D60C4CBC877CAC4BF3BA02C07AD544C951C3CA2FC46B70219BC3DC" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'0021C21B2A7FADB677DAB64389B3FDA4AAC892D5C81B786A459E4182104A1501462FFD471422AF4D48BEEB864951D5947A55E3155E670DFC4A96017B0FD0E725', [[h'', {1: -3, 4: h'6F75722D736563726574'}, h'792C46CE0BC689747133FA0DB1F5E2BC4DAAE22F906E93DFCA2DF44F0DF6C2CEF16EA8FC91D52AD662C4B49DD0D689E1086EC754347957F80F95C92C887521641B8F637D91C6E258']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E58400021C21B2A7FADB677DAB64389B3FDA4AAC892D5C81B786A459E4182104A1501462FFD471422AF4D48BEEB864951D5947A55E3155E670DFC4A96017B0FD0E725818340A20122044A6F75722D7365637265745848792C46CE0BC689747133FA0DB1F5E2BC4DAAE22F906E93DFCA2DF44F0DF6C2CEF16EA8FC91D52AD662C4B49DD0D689E1086EC754347957F80F95C92C887521641B8F637D91C6E258" + } +} diff --git a/src/test/resources/Examples/aes-wrap-examples/aes-wrap-128-04.json b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-128-04.json new file mode 100644 index 0000000..765ae71 --- /dev/null +++ b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-128-04.json @@ -0,0 +1,41 @@ +{ + "title":"wrap-128-04: 128-bit key wrap for 128-bit encrypt", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "unprotected":{ + "kid":"our-secret", + "alg":"A128KW" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + } + } + ] + }, + "rng_stream":[ + "7A1B4CF78F4B8C6E9AB68198C43D22F3", + "DDDC08972DF9BE62855291A1" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"7A1B4CF78F4B8C6E9AB68198C43D22F3" + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'DDDC08972DF9BE62855291A1'}, h'6F5556D71834CD1BD3FDCBFFF28CFA0F7D598C138D23B40C225AF5E3F2096A46C766813D', [[h'', {1: -3, 4: h'6F75722D736563726574'}, h'112872F405A5AC48A2EDE46AC20E93E3D3A38B9762D0A3E8']]])", + "cbor":"D8608443A10101A1054CDDDC08972DF9BE62855291A158246F5556D71834CD1BD3FDCBFFF28CFA0F7D598C138D23B40C225AF5E3F2096A46C766813D818340A20122044A6F75722D7365637265745818112872F405A5AC48A2EDE46AC20E93E3D3A38B9762D0A3E8" + } +} diff --git a/src/test/resources/Examples/aes-wrap-examples/aes-wrap-128-05.json b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-128-05.json new file mode 100644 index 0000000..c91fe6a --- /dev/null +++ b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-128-05.json @@ -0,0 +1,41 @@ +{ + "title":"wrap-128-05: 128-bit key wrap for 192-bit encrypt", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A192GCM" + }, + "recipients":[ + { + "unprotected":{ + "kid":"our-secret", + "alg":"A128KW" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + } + } + ] + }, + "rng_stream":[ + "7A1B4CF7C5F085E2A829685D99C1810251E162022A65CDB9", + "DDDC08972DF9BE62855291A1" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8367456E637279707443A1010240", + "CEK_hex":"7A1B4CF7C5F085E2A829685D99C1810251E162022A65CDB9" + }, + "output":{ + "cbor_diag":"96([h'A10102', {5: h'DDDC08972DF9BE62855291A1'}, h'3CA8EE3F7927A730BC9DBD6FA3070764F6F6319CF2C31FBDA4C288F19CF6F064C8B32E28', [[h'', {1: -3, 4: h'6F75722D736563726574'}, h'23A276FE917EF97D9D60E1732C02E6B7E5820C2FD2712DE9E36000F74559BC38']]])", + "cbor":"D8608443A10102A1054CDDDC08972DF9BE62855291A158243CA8EE3F7927A730BC9DBD6FA3070764F6F6319CF2C31FBDA4C288F19CF6F064C8B32E28818340A20122044A6F75722D736563726574582023A276FE917EF97D9D60E1732C02E6B7E5820C2FD2712DE9E36000F74559BC38" + } +} diff --git a/src/test/resources/Examples/aes-wrap-examples/aes-wrap-192-01.json b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-192-01.json new file mode 100644 index 0000000..f5261b5 --- /dev/null +++ b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-192-01.json @@ -0,0 +1,41 @@ +{ + "title":"wrap-129-01: 129-bit key wrap for 128-bi MAC", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"AES-MAC-128/64", + "protected":{ + "alg":"AES-MAC-128/64" + }, + "recipients":[ + { + "unprotected":{ + "kid":"sec-192", + "alg":"A192KW" + }, + "key":{ + "kty":"oct", + "kid":"sec-192", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmI" + } + } + ] + }, + "rng_stream":[ + "DDDC08972DF9BE62855291A17A1B4CF7" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "ToMac_hex":"84634D414343A1010E4054546869732069732074686520636F6E74656E742E", + "CEK_hex":"DDDC08972DF9BE62855291A17A1B4CF7" + }, + "output":{ + "cbor_diag":"97([h'A1010E', {}, h'546869732069732074686520636F6E74656E742E', h'36F5AFAF0BAB5D43', [[h'', {1: -4, 4: h'7365632D313932'}, h'0C60CBB6DB490AF990714848D249FB599A3E2F23B18FF29E']]])", + "cbor":"D8618543A1010EA054546869732069732074686520636F6E74656E742E4836F5AFAF0BAB5D43818340A2012304477365632D31393258180C60CBB6DB490AF990714848D249FB599A3E2F23B18FF29E" + } +} diff --git a/src/test/resources/Examples/aes-wrap-examples/aes-wrap-192-02.json b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-192-02.json new file mode 100644 index 0000000..3c2134f --- /dev/null +++ b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-192-02.json @@ -0,0 +1,41 @@ +{ + "title":"wrap-129-02: 129-bit key wrap for 256-bit MAC", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"AES-MAC-256/64", + "protected":{ + "alg":"AES-MAC-256/64" + }, + "recipients":[ + { + "unprotected":{ + "kid":"sec-192", + "alg":"A192KW" + }, + "key":{ + "kty":"oct", + "kid":"sec-192", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmI" + } + } + ] + }, + "rng_stream":[ + "DDDC08972DF9BE62855291A17A1B4CF7823E187F795DD52817F2D71AEC89359E" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "ToMac_hex":"84634D414343A1010F4054546869732069732074686520636F6E74656E742E", + "CEK_hex":"DDDC08972DF9BE62855291A17A1B4CF7823E187F795DD52817F2D71AEC89359E" + }, + "output":{ + "cbor_diag":"97([h'A1010F', {}, h'546869732069732074686520636F6E74656E742E', h'6DDE04729881CDFF', [[h'', {1: -4, 4: h'7365632D313932'}, h'C3F9C4CB155D284187E84C34BAD08FD89E7263C093166DCC63723A94E08F97E6601F397360BBD114']]])", + "cbor":"D8618543A1010FA054546869732069732074686520636F6E74656E742E486DDE04729881CDFF818340A2012304477365632D3139325828C3F9C4CB155D284187E84C34BAD08FD89E7263C093166DCC63723A94E08F97E6601F397360BBD114" + } +} diff --git a/src/test/resources/Examples/aes-wrap-examples/aes-wrap-192-03.json b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-192-03.json new file mode 100644 index 0000000..f760f4a --- /dev/null +++ b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-192-03.json @@ -0,0 +1,41 @@ +{ + "title":"wrap-129-03: 129-bit key wrap for 512-bit MAC", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "unprotected":{ + "kid":"sec-192", + "alg":"A192KW" + }, + "key":{ + "kty":"oct", + "kid":"sec-192", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmI" + } + } + ] + }, + "rng_stream":[ + "DDDC08972DF9BE62855291A17A1B4CF7F44B35C1824229B8625961194BC0D06FACDFB04D99C91E3AE3467274F6467F21325594BAD797B9288EC90DDB16AEB2FC" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E", + "CEK_hex":"DDDC08972DF9BE62855291A17A1B4CF7F44B35C1824229B8625961194BC0D06FACDFB04D99C91E3AE3467274F6467F21325594BAD797B9288EC90DDB16AEB2FC" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'8FED1AF0EFC73BE97B81A2A2E0BE2889AA2C28DED89F757B25E871C55763820B789F1E433AA0D13F9C0262E7122B4BDF97625C2419B534EFBABCE51083E9AEE8', [[h'', {1: -4, 4: h'7365632D313932'}, h'26A1A368150DE3754AF57307F76A67CE9B6AE1FFD4C8D168C4B84FB85D9A12FEED7F8E0FF0BB1470AB58DF9559BA5623D59C49C75311EF3AAD3FB332B82CABE3FCC0FCC4EF551D07']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E58408FED1AF0EFC73BE97B81A2A2E0BE2889AA2C28DED89F757B25E871C55763820B789F1E433AA0D13F9C0262E7122B4BDF97625C2419B534EFBABCE51083E9AEE8818340A2012304477365632D313932584826A1A368150DE3754AF57307F76A67CE9B6AE1FFD4C8D168C4B84FB85D9A12FEED7F8E0FF0BB1470AB58DF9559BA5623D59C49C75311EF3AAD3FB332B82CABE3FCC0FCC4EF551D07" + } +} diff --git a/src/test/resources/Examples/aes-wrap-examples/aes-wrap-192-04.json b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-192-04.json new file mode 100644 index 0000000..e5bc85d --- /dev/null +++ b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-192-04.json @@ -0,0 +1,41 @@ +{ + "title":"wrap-192-04: 192-bit key wrap for 128-bit encrypt", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "unprotected":{ + "kid":"sec-192", + "alg":"A192KW" + }, + "key":{ + "kty":"oct", + "kid":"sec-192", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmI" + } + } + ] + }, + "rng_stream":[ + "7A1B4CF77102CE028A0308C11D50A36F", + "DDDC08972DF9BE62855291A1" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"7A1B4CF77102CE028A0308C11D50A36F" + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'DDDC08972DF9BE62855291A1'}, h'5E26B474F941D1223ADF75D9F970D608278AADF1EC0558EF4C5A9DF55732BA901BD631FF', [[h'', {1: -4, 4: h'7365632D313932'}, h'4677A7C41F33EC27E8489AFBA06249A649F01F06496DC414']]])", + "cbor":"D8608443A10101A1054CDDDC08972DF9BE62855291A158245E26B474F941D1223ADF75D9F970D608278AADF1EC0558EF4C5A9DF55732BA901BD631FF818340A2012304477365632D31393258184677A7C41F33EC27E8489AFBA06249A649F01F06496DC414" + } +} diff --git a/src/test/resources/Examples/aes-wrap-examples/aes-wrap-192-05.json b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-192-05.json new file mode 100644 index 0000000..87ebebf --- /dev/null +++ b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-192-05.json @@ -0,0 +1,41 @@ +{ + "title":"wrap-192-05: 129-bit key wrap for 192-bit encrypt", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A192GCM" + }, + "recipients":[ + { + "unprotected":{ + "kid":"sec-192", + "alg":"A192KW" + }, + "key":{ + "kty":"oct", + "kid":"sec-192", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmI" + } + } + ] + }, + "rng_stream":[ + "7A1B4CF7C57BBE762A0E07902EB71215E9582EDABF21E6D4", + "DDDC08972DF9BE62855291A1" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8367456E637279707443A1010240", + "CEK_hex":"7A1B4CF7C57BBE762A0E07902EB71215E9582EDABF21E6D4" + }, + "output":{ + "cbor_diag":"96([h'A10102', {5: h'DDDC08972DF9BE62855291A1'}, h'00D06F278ECC3678D93CC906845F1E5A849AF95C0EEC22DACFA2FEA27AC14BA9031D355F', [[h'', {1: -4, 4: h'7365632D313932'}, h'D34FF57DBD52928650AC54D71BFA9D9530494860EF97E977A0D8F0DDD133E08C']]])", + "cbor":"D8608443A10102A1054CDDDC08972DF9BE62855291A1582400D06F278ECC3678D93CC906845F1E5A849AF95C0EEC22DACFA2FEA27AC14BA9031D355F818340A2012304477365632D3139325820D34FF57DBD52928650AC54D71BFA9D9530494860EF97E977A0D8F0DDD133E08C" + } +} diff --git a/src/test/resources/Examples/aes-wrap-examples/aes-wrap-256-01.json b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-256-01.json new file mode 100644 index 0000000..fb3fb19 --- /dev/null +++ b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-256-01.json @@ -0,0 +1,41 @@ +{ + "title":"wrap-256-01: 256-bit key wrap for 128-bit MAC", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"AES-MAC-128/64", + "protected":{ + "alg":"AES-MAC-128/64" + }, + "recipients":[ + { + "unprotected":{ + "kid":"018c0ae5-4d9b-471b-bfd6-eef314bc7037", + "alg":"A256KW" + }, + "key":{ + "kty":"oct", + "kid":"018c0ae5-4d9b-471b-bfd6-eef314bc7037", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "rng_stream":[ + "DDDC08972DF9BE62855291A17A1B4CF7" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "ToMac_hex":"84634D414343A1010E4054546869732069732074686520636F6E74656E742E", + "CEK_hex":"DDDC08972DF9BE62855291A17A1B4CF7" + }, + "output":{ + "cbor_diag":"97([h'A1010E', {}, h'546869732069732074686520636F6E74656E742E', h'36F5AFAF0BAB5D43', [[h'', {1: -5, 4: h'30313863306165352D346439622D343731622D626664362D656566333134626337303337'}, h'711AB0DC2FC4585DCE27EFFA6781C8093EBA906F227B6EB0']]])", + "cbor":"D8618543A1010EA054546869732069732074686520636F6E74656E742E4836F5AFAF0BAB5D43818340A2012404582430313863306165352D346439622D343731622D626664362D6565663331346263373033375818711AB0DC2FC4585DCE27EFFA6781C8093EBA906F227B6EB0" + } +} diff --git a/src/test/resources/Examples/aes-wrap-examples/aes-wrap-256-02.json b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-256-02.json new file mode 100644 index 0000000..256a516 --- /dev/null +++ b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-256-02.json @@ -0,0 +1,41 @@ +{ + "title":"wrap-256-02: 256-bit key wrap for 256-bit MAC", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"AES-MAC-256/64", + "protected":{ + "alg":"AES-MAC-256/64" + }, + "recipients":[ + { + "unprotected":{ + "kid":"018c0ae5-4d9b-471b-bfd6-eef314bc7037", + "alg":"A256KW" + }, + "key":{ + "kty":"oct", + "kid":"018c0ae5-4d9b-471b-bfd6-eef314bc7037", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "rng_stream":[ + "DDDC08972DF9BE62855291A17A1B4CF7F4F7250CBC772802D7623EB9673482E8" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "ToMac_hex":"84634D414343A1010F4054546869732069732074686520636F6E74656E742E", + "CEK_hex":"DDDC08972DF9BE62855291A17A1B4CF7F4F7250CBC772802D7623EB9673482E8" + }, + "output":{ + "cbor_diag":"97([h'A1010F', {}, h'546869732069732074686520636F6E74656E742E', h'804E3B7905594750', [[h'', {1: -5, 4: h'30313863306165352D346439622D343731622D626664362D656566333134626337303337'}, h'7AEE8261238880308251A7231533135CB0C9AE8B4EC79E77C43452BFD523569BE49393145DCC8615']]])", + "cbor":"D8618543A1010FA054546869732069732074686520636F6E74656E742E48804E3B7905594750818340A2012404582430313863306165352D346439622D343731622D626664362D65656633313462633730333758287AEE8261238880308251A7231533135CB0C9AE8B4EC79E77C43452BFD523569BE49393145DCC8615" + } +} diff --git a/src/test/resources/Examples/aes-wrap-examples/aes-wrap-256-03.json b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-256-03.json new file mode 100644 index 0000000..9c458d5 --- /dev/null +++ b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-256-03.json @@ -0,0 +1,41 @@ +{ + "title":"wrap-256-03: 256-bit key wrap for 512-bit MAC", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "unprotected":{ + "kid":"018c0ae5-4d9b-471b-bfd6-eef314bc7037", + "alg":"A256KW" + }, + "key":{ + "kty":"oct", + "kid":"018c0ae5-4d9b-471b-bfd6-eef314bc7037", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "rng_stream":[ + "DDDC08972DF9BE62855291A17A1B4CF7EA02A160193C28DD5088A862996DE2502C6C499BE6211E5CCEF2F21EF0F8DF69C5BE05EC8F1179D216F06D3155EC127E" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E", + "CEK_hex":"DDDC08972DF9BE62855291A17A1B4CF7EA02A160193C28DD5088A862996DE2502C6C499BE6211E5CCEF2F21EF0F8DF69C5BE05EC8F1179D216F06D3155EC127E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'4336C9B446AC3B1A062A719CBF5AF19F9DAC88BE743DC9102D9B0185C9EEBD0134AAE137C0E79A5F43267FADDC6EE3FFA277157F26390DB9EE6ADA88CC952139', [[h'', {1: -5, 4: h'30313863306165352D346439622D343731622D626664362D656566333134626337303337'}, h'3FBB60F882C1523A8B7768CA0C48920425A3CC47935F0D7FD4980020E378EAB85210D97B557B891EEC70785DB812C57DF719F064540ED84D5C93C8765095E422DDBCEF290D86633D']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E58404336C9B446AC3B1A062A719CBF5AF19F9DAC88BE743DC9102D9B0185C9EEBD0134AAE137C0E79A5F43267FADDC6EE3FFA277157F26390DB9EE6ADA88CC952139818340A2012404582430313863306165352D346439622D343731622D626664362D65656633313462633730333758483FBB60F882C1523A8B7768CA0C48920425A3CC47935F0D7FD4980020E378EAB85210D97B557B891EEC70785DB812C57DF719F064540ED84D5C93C8765095E422DDBCEF290D86633D" + } +} diff --git a/src/test/resources/Examples/aes-wrap-examples/aes-wrap-256-04.json b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-256-04.json new file mode 100644 index 0000000..c498b60 --- /dev/null +++ b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-256-04.json @@ -0,0 +1,41 @@ +{ + "title":"wrap-256-04: 256-bit key wrap for 128-bit encrypt", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "unprotected":{ + "kid":"018c0ae5-4d9b-471b-bfd6-eef314bc7037", + "alg":"A256KW" + }, + "key":{ + "kty":"oct", + "kid":"018c0ae5-4d9b-471b-bfd6-eef314bc7037", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "rng_stream":[ + "7A1B4CF7DCD2F9EC0F44B107B89BC7A5", + "DDDC08972DF9BE62855291A1" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"7A1B4CF7DCD2F9EC0F44B107B89BC7A5" + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'DDDC08972DF9BE62855291A1'}, h'70C0A7FEEA2254DD2C301963DAF77580EE31F7C4125246D436EB205B58AEFB5140DFDF51', [[h'', {1: -5, 4: h'30313863306165352D346439622D343731622D626664362D656566333134626337303337'}, h'DC4725A1E6FE212C3B2C268954C97E7422D4B85E6E131D72']]])", + "cbor":"D8608443A10101A1054CDDDC08972DF9BE62855291A1582470C0A7FEEA2254DD2C301963DAF77580EE31F7C4125246D436EB205B58AEFB5140DFDF51818340A2012404582430313863306165352D346439622D343731622D626664362D6565663331346263373033375818DC4725A1E6FE212C3B2C268954C97E7422D4B85E6E131D72" + } +} diff --git a/src/test/resources/Examples/aes-wrap-examples/aes-wrap-256-05.json b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-256-05.json new file mode 100644 index 0000000..d503672 --- /dev/null +++ b/src/test/resources/Examples/aes-wrap-examples/aes-wrap-256-05.json @@ -0,0 +1,41 @@ +{ + "title":"wrap-256-05: 256-bit key wrap for 192-bit encrypt", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A192GCM" + }, + "recipients":[ + { + "unprotected":{ + "kid":"018c0ae5-4d9b-471b-bfd6-eef314bc7037", + "alg":"A256KW" + }, + "key":{ + "kty":"oct", + "kid":"018c0ae5-4d9b-471b-bfd6-eef314bc7037", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "rng_stream":[ + "7A1B4CF7D3F44E14D7E01D160EB3B6A9FD6836C8E9AA27F2", + "DDDC08972DF9BE62855291A1" + ] + }, + "intermediates":{ + "recipients":[ + { + } + ], + "AAD_hex":"8367456E637279707443A1010240", + "CEK_hex":"7A1B4CF7D3F44E14D7E01D160EB3B6A9FD6836C8E9AA27F2" + }, + "output":{ + "cbor_diag":"96([h'A10102', {5: h'DDDC08972DF9BE62855291A1'}, h'56469FC7CA43E0F7F1970156D7D3C5EDAE33915C6DDFC0D2AC38AC13C3D00818E806D9C9', [[h'', {1: -5, 4: h'30313863306165352D346439622D343731622D626664362D656566333134626337303337'}, h'E23608D3E444847B45BD6FEBFF3CC83C5C0769E65D441CCEF0B70C09121A79F6']]])", + "cbor":"D8608443A10102A1054CDDDC08972DF9BE62855291A1582456469FC7CA43E0F7F1970156D7D3C5EDAE33915C6DDFC0D2AC38AC13C3D00818E806D9C9818340A2012404582430313863306165352D346439622D343731622D626664362D6565663331346263373033375820E23608D3E444847B45BD6FEBFF3CC83C5C0769E65D441CCEF0B70C09121A79F6" + } +} diff --git a/src/test/resources/Examples/cbc-mac-examples/cbc-mac-01.json b/src/test/resources/Examples/cbc-mac-examples/cbc-mac-01.json new file mode 100644 index 0000000..11f1443 --- /dev/null +++ b/src/test/resources/Examples/cbc-mac-examples/cbc-mac-01.json @@ -0,0 +1,38 @@ +{ + "title":"CBC-MAC-01: MAC example with direct shared key and AES-CBC-MAC-128/64", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"AES-MAC-128/64", + "protected":{ + "alg":"AES-MAC-128/64" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A1010E4054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A1010E', {}, h'546869732069732074686520636F6E74656E742E', h'C1CA820E6E247089', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A1010EA054546869732069732074686520636F6E74656E742E48C1CA820E6E247089818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/cbc-mac-examples/cbc-mac-02.json b/src/test/resources/Examples/cbc-mac-examples/cbc-mac-02.json new file mode 100644 index 0000000..2673dad --- /dev/null +++ b/src/test/resources/Examples/cbc-mac-examples/cbc-mac-02.json @@ -0,0 +1,38 @@ +{ + "title":"CBC-MAC-02: MAC example with direct shared key and AES-CBC-MAC-128/128", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"AES-MAC-128/128", + "protected":{ + "alg":"AES-MAC-128/128" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84634D414344A10118194054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A1011819', {}, h'546869732069732074686520636F6E74656E742E', h'B242D2A935FEB4D66FF8334AC95BF72B', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618544A1011819A054546869732069732074686520636F6E74656E742E50B242D2A935FEB4D66FF8334AC95BF72B818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/cbc-mac-examples/cbc-mac-03.json b/src/test/resources/Examples/cbc-mac-examples/cbc-mac-03.json new file mode 100644 index 0000000..e1a5ef7 --- /dev/null +++ b/src/test/resources/Examples/cbc-mac-examples/cbc-mac-03.json @@ -0,0 +1,38 @@ +{ + "title":"CBC-MAC-03: MAC example with direct shared key and AES-CMAC/64", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"AES-MAC-256/64", + "protected":{ + "alg":"AES-MAC-256/64" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A1010F4054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A1010F', {}, h'546869732069732074686520636F6E74656E742E', h'9E1226BA1F81B848', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A1010FA054546869732069732074686520636F6E74656E742E489E1226BA1F81B848818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/cbc-mac-examples/cbc-mac-04.json b/src/test/resources/Examples/cbc-mac-examples/cbc-mac-04.json new file mode 100644 index 0000000..4d4e9ea --- /dev/null +++ b/src/test/resources/Examples/cbc-mac-examples/cbc-mac-04.json @@ -0,0 +1,38 @@ +{ + "title":"CBC-MAC-04: MAC example with direct shared key and AES-CBC-MAC-256/128", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"AES-MAC-256/128", + "protected":{ + "alg":"AES-MAC-256/128" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84634D414344A101181A4054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A101181A', {}, h'546869732069732074686520636F6E74656E742E', h'DB9C7598A0751C5FF3366B6205BD2AA9', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618544A101181AA054546869732069732074686520636F6E74656E742E50DB9C7598A0751C5FF3366B6205BD2AA9818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/cbc-mac-examples/cbc-mac-enc-01.json b/src/test/resources/Examples/cbc-mac-examples/cbc-mac-enc-01.json new file mode 100644 index 0000000..739211c --- /dev/null +++ b/src/test/resources/Examples/cbc-mac-examples/cbc-mac-enc-01.json @@ -0,0 +1,38 @@ +{ + "title":"CBC-MAC-ENC-01: MAC example with direct shared key and AES-CBC-MAC-128/64 - implicit", + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"AES-MAC-128/64", + "protected":{ + "alg":"AES-MAC-128/64" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A1010E4054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A1010E', {}, h'546869732069732074686520636F6E74656E742E', h'8584DBF007FDC69F'])", + "cbor":"D18443A1010EA054546869732069732074686520636F6E74656E742E488584DBF007FDC69F" + } +} diff --git a/src/test/resources/Examples/cbc-mac-examples/cbc-mac-enc-02.json b/src/test/resources/Examples/cbc-mac-examples/cbc-mac-enc-02.json new file mode 100644 index 0000000..2805d77 --- /dev/null +++ b/src/test/resources/Examples/cbc-mac-examples/cbc-mac-enc-02.json @@ -0,0 +1,38 @@ +{ + "title":"CBC-MAC-ENC-02: MAC example with direct shared key and AES-CBC-MAC-128/128 - implicit", + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"AES-MAC-128/128", + "protected":{ + "alg":"AES-MAC-128/128" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433044A10118194054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A1011819', {}, h'546869732069732074686520636F6E74656E742E', h'F0C295E78F3091E95513FA0427ADBE25'])", + "cbor":"D18444A1011819A054546869732069732074686520636F6E74656E742E50F0C295E78F3091E95513FA0427ADBE25" + } +} diff --git a/src/test/resources/Examples/cbc-mac-examples/cbc-mac-enc-03.json b/src/test/resources/Examples/cbc-mac-examples/cbc-mac-enc-03.json new file mode 100644 index 0000000..223f5db --- /dev/null +++ b/src/test/resources/Examples/cbc-mac-examples/cbc-mac-enc-03.json @@ -0,0 +1,38 @@ +{ + "title":"CBC-MAC-ENC-03: MAC example with direct shared key and AES-CMAC/64 - implicit", + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"AES-MAC-256/64", + "protected":{ + "alg":"AES-MAC-256/64" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A1010F4054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A1010F', {}, h'546869732069732074686520636F6E74656E742E', h'726043745027214F'])", + "cbor":"D18443A1010FA054546869732069732074686520636F6E74656E742E48726043745027214F" + } +} diff --git a/src/test/resources/Examples/cbc-mac-examples/cbc-mac-enc-04.json b/src/test/resources/Examples/cbc-mac-examples/cbc-mac-enc-04.json new file mode 100644 index 0000000..434f9e4 --- /dev/null +++ b/src/test/resources/Examples/cbc-mac-examples/cbc-mac-enc-04.json @@ -0,0 +1,38 @@ +{ + "title":"CBC-MAC-ENC-04: MAC example with direct shared key and AES-CBC-MAC-256/128 - implicit", + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"AES-MAC-256/128", + "protected":{ + "alg":"AES-MAC-256/128" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433044A101181A4054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A101181A', {}, h'546869732069732074686520636F6E74656E742E', h'403152CC208C1D501E1DC2A789AE49E4'])", + "cbor":"D18444A101181AA054546869732069732074686520636F6E74656E742E50403152CC208C1D501E1DC2A789AE49E4" + } +} diff --git a/src/test/resources/Examples/chacha-poly-examples/chacha-poly-01.json b/src/test/resources/Examples/chacha-poly-examples/chacha-poly-01.json new file mode 100644 index 0000000..4219d02 --- /dev/null +++ b/src/test/resources/Examples/chacha-poly-examples/chacha-poly-01.json @@ -0,0 +1,41 @@ +{ + "title":"ChaCha-Poly1305-01: Encryption example for spec - ", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"ChaCha-Poly1305" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "unprotected":{ + "alg":"direct", + "kid":"sec-256" + } + } + ] + }, + "rng_stream":[ + "26682306D4FB28CA01B43B80" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707444A101181840", + "CEK_hex":"0F1E2D3C4B5A69788796A5B4C3D2E1F01F2E3D4C5B6A798897A6B5C4D3E2F100", + "recipients":[ + { + + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1011818', {5: h'26682306D4FB28CA01B43B80'}, h'5F2BD5381BBB04921A8477E55C0D850069674A05E683D416583AA0CEE0E2929CDF648094', [[h'', {1: -6, 4: h'7365632D323536'}, h'']]])", + "cbor":"D8608444A1011818A1054C26682306D4FB28CA01B43B8058245F2BD5381BBB04921A8477E55C0D850069674A05E683D416583AA0CEE0E2929CDF648094818340A2012504477365632D32353640" + } + } diff --git a/src/test/resources/Examples/chacha-poly-examples/chacha-poly-enc-01.json b/src/test/resources/Examples/chacha-poly-examples/chacha-poly-enc-01.json new file mode 100644 index 0000000..f16d777 --- /dev/null +++ b/src/test/resources/Examples/chacha-poly-examples/chacha-poly-enc-01.json @@ -0,0 +1,36 @@ +{ + "title":"ChaCha20-Poly-enc-03: Encryption example for ChaCha20-Poly1305 - implicit", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"ChaCha-Poly1305" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "unprotected":{ + "alg":"direct", + "kid":"sec-64" + } + } + ] + }, + "rng_stream":[ + "5C3A9950BD2852F66E6C8D4F" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743144A101181840", + "CEK_hex":"0F1E2D3C4B5A69788796A5B4C3D2E1F01F2E3D4C5B6A798897A6B5C4D3E2F100" + }, + "output":{ + "cbor_diag":"16([h'A1011818', {5: h'5C3A9950BD2852F66E6C8D4F'}, h'3E536D4992A21591575C55FA22981B31AE1C045946D0E41A8A1ABD12BC9525922F4EB618'])", + "cbor":"D08344A1011818A1054C5C3A9950BD2852F66E6C8D4F58243E536D4992A21591575C55FA22981B31AE1C045946D0E41A8A1ABD12BC9525922F4EB618" + } + } diff --git a/src/test/resources/Examples/countersign/Encrypt-01.json b/src/test/resources/Examples/countersign/Encrypt-01.json new file mode 100644 index 0000000..eae4472 --- /dev/null +++ b/src/test/resources/Examples/countersign/Encrypt-01.json @@ -0,0 +1,64 @@ +{ + "title":"Encrypt-01 - Encrypt0 w/ one countersignature", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ], + "countersign":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + } + } + ] + } + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743043A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ], + "countersigners":[ + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1010143A1012740582460973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A" + } + ] + }, + "output":{ + "cbor_diag":"16([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE', 7: [h'A10127', {4: h'3131'}, h'E10439154CC75C7A3A5391491F88651E0292FD0FE0E02CF740547EAF6677B4A4040B8ECA16DB592881262F77B14C1A086C02268B17171CA16BE4B8595F8C0A08']}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A'])", + "cbor":"D08343A10101A2054C02D1F7E6F26C43D4868D87CE078343A10127A1044231315840E10439154CC75C7A3A5391491F88651E0292FD0FE0E02CF740547EAF6677B4A4040B8ECA16DB592881262F77B14C1A086C02268B17171CA16BE4B8595F8C0A08582460973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A" + } +} diff --git a/src/test/resources/Examples/countersign/Encrypt-02.json b/src/test/resources/Examples/countersign/Encrypt-02.json new file mode 100644 index 0000000..1102269 --- /dev/null +++ b/src/test/resources/Examples/countersign/Encrypt-02.json @@ -0,0 +1,83 @@ +{ + "title":"Encrypt-02: Encrypt0 - multiple countersignatures", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ], + "countersign":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + } + }, + { + "key":{ + "kty":"EC", + "kid":"12", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + } + ] + } + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743043A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ], + "countersigners":[ + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1010143A1012740582460973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A" + }, + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1010143A1012640582460973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A" + } + ] + }, + "output":{ + "cbor_diag":"16([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE', 7: [[h'A10127', {4: h'3131'}, h'E10439154CC75C7A3A5391491F88651E0292FD0FE0E02CF740547EAF6677B4A4040B8ECA16DB592881262F77B14C1A086C02268B17171CA16BE4B8595F8C0A08'], [h'A10126', {4: h'3131'}, h'FCA98ECAC80B5FEB3AC7C108B2B79110DE88867BC0426FC83C53CCD6789694EDC5FEE3C40DE8E7B44FE8AAD367E095C8FC31B79EE666DF9CF90906EB43756C73']]}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A'])", + "cbor":"D08343A10101A2054C02D1F7E6F26C43D4868D87CE07828343A10127A1044231315840E10439154CC75C7A3A5391491F88651E0292FD0FE0E02CF740547EAF6677B4A4040B8ECA16DB592881262F77B14C1A086C02268B17171CA16BE4B8595F8C0A088343A10126A1044231315840FCA98ECAC80B5FEB3AC7C108B2B79110DE88867BC0426FC83C53CCD6789694EDC5FEE3C40DE8E7B44FE8AAD367E095C8FC31B79EE666DF9CF90906EB43756C73582460973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A" + } +} diff --git a/src/test/resources/Examples/countersign/Enveloped-01.json b/src/test/resources/Examples/countersign/Enveloped-01.json new file mode 100644 index 0000000..7904553 --- /dev/null +++ b/src/test/resources/Examples/countersign/Enveloped-01.json @@ -0,0 +1,64 @@ +{ + "title":"Enveloped-01: Enveloped w/ one Countersignature ", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ], + "countersign":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + } + } + ] + } + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ], + "countersigners":[ + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1010143A1012740582460973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE', 7: [h'A10127', {4: h'3131'}, h'9A8EEDE3B3CB837BA00DF08FA21B128B2D6D9162A4290A582D9F19BD0FB502F0F92B9BF453A405401F8B7055EF4E958DF7F4FBD7CFB4A0C97160F9472B0AA104']}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A10101A2054C02D1F7E6F26C43D4868D87CE078343A10127A10442313158409A8EEDE3B3CB837BA00DF08FA21B128B2D6D9162A4290A582D9F19BD0FB502F0F92B9BF453A405401F8B7055EF4E958DF7F4FBD7CFB4A0C97160F9472B0AA104582460973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/countersign/Enveloped-02.json b/src/test/resources/Examples/countersign/Enveloped-02.json new file mode 100644 index 0000000..6c97d42 --- /dev/null +++ b/src/test/resources/Examples/countersign/Enveloped-02.json @@ -0,0 +1,83 @@ +{ + "title":"Enveloped-02: Enveloped w/ two Countersignatures", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ], + "countersign":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + } + }, + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + } + ] + } + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ], + "countersigners":[ + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1010143A1012740582460973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC" + }, + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1010143A1012640582460973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE', 7: [[h'A10127', {4: h'3131'}, h'9A8EEDE3B3CB837BA00DF08FA21B128B2D6D9162A4290A582D9F19BD0FB502F0F92B9BF453A405401F8B7055EF4E958DF7F4FBD7CFB4A0C97160F9472B0AA104'], [h'A10126', {4: h'3131'}, h'2427CB3756850FBB79051807C8B23D2E6D16A3224F9901B47399CFC7E3FAC4CC621DBBEB0202A6D8BB25695C9DCC9C474920FF57606D764DEA192FC8674116F2']]}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A10101A2054C02D1F7E6F26C43D4868D87CE07828343A10127A10442313158409A8EEDE3B3CB837BA00DF08FA21B128B2D6D9162A4290A582D9F19BD0FB502F0F92B9BF453A405401F8B7055EF4E958DF7F4FBD7CFB4A0C97160F9472B0AA1048343A10126A10442313158402427CB3756850FBB79051807C8B23D2E6D16A3224F9901B47399CFC7E3FAC4CC621DBBEB0202A6D8BB25695C9DCC9C474920FF57606D764DEA192FC8674116F2582460973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/countersign/Enveloped-03.json b/src/test/resources/Examples/countersign/Enveloped-03.json new file mode 100644 index 0000000..b7a6bb2 --- /dev/null +++ b/src/test/resources/Examples/countersign/Enveloped-03.json @@ -0,0 +1,68 @@ +{ + "title":"Enveloped-03: Enveloped w/ one Countersignature on recipient ", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "countersign":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + } + } + ] + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + "countersigners":[ + { + "ToBeSign_hex":"8570436F756E7465725369676E61747572654043A101274040" + } + ] + } + ], + "countersigners":[ + { + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC', [[h'', {1: -6, 4: h'6F75722D736563726574', 7: [h'A10127', {4: h'3131'}, h'CCB1F3FEDFCEA72B9C867963E252B6658AD07F3F5F15A326A3F57254CCB8D48D60021D2F1F8A803B844B7872166C6D459025D21C8C8462A244BA19604EC4D50B']}, h'']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC818340A30125044A6F75722D736563726574078343A10127A1044231315840CCB1F3FEDFCEA72B9C867963E252B6658AD07F3F5F15A326A3F57254CCB8D48D60021D2F1F8A803B844B7872166C6D459025D21C8C8462A244BA19604EC4D50B40" + } +} diff --git a/src/test/resources/Examples/countersign/mac-01.json b/src/test/resources/Examples/countersign/mac-01.json new file mode 100644 index 0000000..5ef7d9d --- /dev/null +++ b/src/test/resources/Examples/countersign/mac-01.json @@ -0,0 +1,62 @@ +{ + "title":"MAC-01: MAC message w/ one counter signature", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ], + "countersign":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + } + } + ] + } + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ], + "countersigners":[ + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1010543A101274054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"97([h'A10105', {7: [h'A10127', {4: h'3131'}, h'B4924B18EB4E047313C707B0EDA4AB844345F2C44987D6F9EBCC777EFD4078CC0F4C108DEF959F78F1EDB2765425785FCD17D512BE31EEB66BEFF1E8FC274707']}, h'546869732069732074686520636F6E74656E742E', h'2BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A10105A1078343A10127A1044231315840B4924B18EB4E047313C707B0EDA4AB844345F2C44987D6F9EBCC777EFD4078CC0F4C108DEF959F78F1EDB2765425785FCD17D512BE31EEB66BEFF1E8FC27470754546869732069732074686520636F6E74656E742E58202BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/countersign/mac-02.json b/src/test/resources/Examples/countersign/mac-02.json new file mode 100644 index 0000000..4fb0573 --- /dev/null +++ b/src/test/resources/Examples/countersign/mac-02.json @@ -0,0 +1,81 @@ +{ + "title":"MAC-02: MAC message w/ two counter signature", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ], + "countersign":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + } + }, + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + } + ] + } + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ], + "countersigners":[ + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1010543A101274054546869732069732074686520636F6E74656E742E" + }, + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1010543A101264054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"97([h'A10105', {7: [[h'A10127', {4: h'3131'}, h'B4924B18EB4E047313C707B0EDA4AB844345F2C44987D6F9EBCC777EFD4078CC0F4C108DEF959F78F1EDB2765425785FCD17D512BE31EEB66BEFF1E8FC274707'], [h'A10126', {4: h'3131'}, h'6ACD94D3CCF71D192E8528360BA7E346DAC464E9EDCA4CFEB6CEB6BDE7BAEC9FF26CA6BDF73D0BE41E36129DCFF751DD2B5AD5CE116E8A963A2738A299477A68']]}, h'546869732069732074686520636F6E74656E742E', h'2BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A10105A107828343A10127A1044231315840B4924B18EB4E047313C707B0EDA4AB844345F2C44987D6F9EBCC777EFD4078CC0F4C108DEF959F78F1EDB2765425785FCD17D512BE31EEB66BEFF1E8FC2747078343A10126A10442313158406ACD94D3CCF71D192E8528360BA7E346DAC464E9EDCA4CFEB6CEB6BDE7BAEC9FF26CA6BDF73D0BE41E36129DCFF751DD2B5AD5CE116E8A963A2738A299477A6854546869732069732074686520636F6E74656E742E58202BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/countersign/mac0-01.json b/src/test/resources/Examples/countersign/mac0-01.json new file mode 100644 index 0000000..1099872 --- /dev/null +++ b/src/test/resources/Examples/countersign/mac0-01.json @@ -0,0 +1,62 @@ +{ + "title":"MAC0-01: MAC0 message w/ one countersignature", + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ], + "countersign":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + } + } + ] + } + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ], + "countersigners":[ + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1010543A101274054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"17([h'A10105', {7: [h'A10127', {4: h'3131'}, h'B4924B18EB4E047313C707B0EDA4AB844345F2C44987D6F9EBCC777EFD4078CC0F4C108DEF959F78F1EDB2765425785FCD17D512BE31EEB66BEFF1E8FC274707']}, h'546869732069732074686520636F6E74656E742E', h'A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58'])", + "cbor":"D18443A10105A1078343A10127A1044231315840B4924B18EB4E047313C707B0EDA4AB844345F2C44987D6F9EBCC777EFD4078CC0F4C108DEF959F78F1EDB2765425785FCD17D512BE31EEB66BEFF1E8FC27470754546869732069732074686520636F6E74656E742E5820A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58" + } +} diff --git a/src/test/resources/Examples/countersign/mac0-02.json b/src/test/resources/Examples/countersign/mac0-02.json new file mode 100644 index 0000000..3fb145b --- /dev/null +++ b/src/test/resources/Examples/countersign/mac0-02.json @@ -0,0 +1,81 @@ +{ + "title":"MAC0-02: MAC0 message w/ two countersignature", + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ], + "countersign":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + } + }, + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + } + ] + } + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ], + "countersigners":[ + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1010543A101274054546869732069732074686520636F6E74656E742E" + }, + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1010543A101264054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"17([h'A10105', {7: [[h'A10127', {4: h'3131'}, h'B4924B18EB4E047313C707B0EDA4AB844345F2C44987D6F9EBCC777EFD4078CC0F4C108DEF959F78F1EDB2765425785FCD17D512BE31EEB66BEFF1E8FC274707'], [h'A10126', {4: h'3131'}, h'6ACD94D3CCF71D192E8528360BA7E346DAC464E9EDCA4CFEB6CEB6BDE7BAEC9FF26CA6BDF73D0BE41E36129DCFF751DD2B5AD5CE116E8A963A2738A299477A68']]}, h'546869732069732074686520636F6E74656E742E', h'A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58'])", + "cbor":"D18443A10105A107828343A10127A1044231315840B4924B18EB4E047313C707B0EDA4AB844345F2C44987D6F9EBCC777EFD4078CC0F4C108DEF959F78F1EDB2765425785FCD17D512BE31EEB66BEFF1E8FC2747078343A10126A10442313158406ACD94D3CCF71D192E8528360BA7E346DAC464E9EDCA4CFEB6CEB6BDE7BAEC9FF26CA6BDF73D0BE41E36129DCFF751DD2B5AD5CE116E8A963A2738A299477A6854546869732069732074686520636F6E74656E742E5820A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58" + } +} diff --git a/src/test/resources/Examples/countersign/signed-01.json b/src/test/resources/Examples/countersign/signed-01.json new file mode 100644 index 0000000..074590d --- /dev/null +++ b/src/test/resources/Examples/countersign/signed-01.json @@ -0,0 +1,64 @@ +{ + "title":"signed-01: Signed message w/ one counter signature on recipient", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "protected":{ + "ctyp":0 + }, + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + }, + "countersign":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + } + } + ] + } + } + ] + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E617475726543A1030043A101274054546869732069732074686520636F6E74656E742E", + "countersigners":[ + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1012743A1012740584077F3EACD11852C4BF9CB1D72FABE6B26FBA1D76092B2B5B7EC83B83557652264E69690DBC1172DDC0BF88411C0D25A507FDB247A20C40D5E245FABD3FC9EC106" + } + ] + } + ] + }, + "output":{ + "cbor_diag":"98([h'A10300', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10127', {7: [h'A10127', {4: h'3131'}, h'8E1BE2F9453D264812E590499132BEF3FBF9EE9DB27C2C168788E3B7EBE506C04FD3D19FAA9F51232AF5C959E4EF47928834647F56DFBE939112884D08EF2505'], 4: h'3131'}, h'77F3EACD11852C4BF9CB1D72FABE6B26FBA1D76092B2B5B7EC83B83557652264E69690DBC1172DDC0BF88411C0D25A507FDB247A20C40D5E245FABD3FC9EC106']]])", + "cbor":"D8628443A10300A054546869732069732074686520636F6E74656E742E818343A10127A2078343A10127A10442313158408E1BE2F9453D264812E590499132BEF3FBF9EE9DB27C2C168788E3B7EBE506C04FD3D19FAA9F51232AF5C959E4EF47928834647F56DFBE939112884D08EF250504423131584077F3EACD11852C4BF9CB1D72FABE6B26FBA1D76092B2B5B7EC83B83557652264E69690DBC1172DDC0BF88411C0D25A507FDB247A20C40D5E245FABD3FC9EC106" + } +} diff --git a/src/test/resources/Examples/countersign/signed-02.json b/src/test/resources/Examples/countersign/signed-02.json new file mode 100644 index 0000000..2761fc4 --- /dev/null +++ b/src/test/resources/Examples/countersign/signed-02.json @@ -0,0 +1,83 @@ +{ + "title":"signed-02: Signed message w/ two counter signature on signer", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "protected":{ + "ctyp":0 + }, + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + }, + "countersign":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + } + }, + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + } + ] + } + } + ] + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E617475726543A1030043A101274054546869732069732074686520636F6E74656E742E", + "countersigners":[ + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1012743A1012740584077F3EACD11852C4BF9CB1D72FABE6B26FBA1D76092B2B5B7EC83B83557652264E69690DBC1172DDC0BF88411C0D25A507FDB247A20C40D5E245FABD3FC9EC106" + }, + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1012743A1012640584077F3EACD11852C4BF9CB1D72FABE6B26FBA1D76092B2B5B7EC83B83557652264E69690DBC1172DDC0BF88411C0D25A507FDB247A20C40D5E245FABD3FC9EC106" + } + ] + } + ] + }, + "output":{ + "cbor_diag":"98([h'A10300', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10127', {7: [[h'A10127', {4: h'3131'}, h'8E1BE2F9453D264812E590499132BEF3FBF9EE9DB27C2C168788E3B7EBE506C04FD3D19FAA9F51232AF5C959E4EF47928834647F56DFBE939112884D08EF2505'], [h'A10126', {4: h'3131'}, h'AF049B80D52C3669B29970C133543754F9CC608CE41123AE1C827E36B38CB825987F01F22BB8AB13E9C66226EE23178FFA00A4FC220593B6E5AC38960071C9C8']], 4: h'3131'}, h'77F3EACD11852C4BF9CB1D72FABE6B26FBA1D76092B2B5B7EC83B83557652264E69690DBC1172DDC0BF88411C0D25A507FDB247A20C40D5E245FABD3FC9EC106']]])", + "cbor":"D8628443A10300A054546869732069732074686520636F6E74656E742E818343A10127A207828343A10127A10442313158408E1BE2F9453D264812E590499132BEF3FBF9EE9DB27C2C168788E3B7EBE506C04FD3D19FAA9F51232AF5C959E4EF47928834647F56DFBE939112884D08EF25058343A10126A1044231315840AF049B80D52C3669B29970C133543754F9CC608CE41123AE1C827E36B38CB825987F01F22BB8AB13E9C66226EE23178FFA00A4FC220593B6E5AC38960071C9C804423131584077F3EACD11852C4BF9CB1D72FABE6B26FBA1D76092B2B5B7EC83B83557652264E69690DBC1172DDC0BF88411C0D25A507FDB247A20C40D5E245FABD3FC9EC106" + } +} diff --git a/src/test/resources/Examples/countersign/signed-03.json b/src/test/resources/Examples/countersign/signed-03.json new file mode 100644 index 0000000..1c75cba --- /dev/null +++ b/src/test/resources/Examples/countersign/signed-03.json @@ -0,0 +1,64 @@ +{ + "title":"signed-03: Signed message w/ one counter signature on message", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "protected":{ + "ctyp":0 + }, + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + } + } + ], + "countersign":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + } + } + ] + } + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E617475726543A1030043A101274054546869732069732074686520636F6E74656E742E" + } + ], + "countersigners":[ + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1030043A101274054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'A10300', {7: [h'A10127', {4: h'3131'}, h'B7CACBA285C4CD3ED2F0146F419886144CA638D087DE123D400167308ACEABC4B5E5C6A40C0DE0B71167A39175EA56C1FE96C89E5E7D30DAF2438A456159A20A']}, h'546869732069732074686520636F6E74656E742E', [[h'A10127', {4: h'3131'}, h'77F3EACD11852C4BF9CB1D72FABE6B26FBA1D76092B2B5B7EC83B83557652264E69690DBC1172DDC0BF88411C0D25A507FDB247A20C40D5E245FABD3FC9EC106']]])", + "cbor":"D8628443A10300A1078343A10127A1044231315840B7CACBA285C4CD3ED2F0146F419886144CA638D087DE123D400167308ACEABC4B5E5C6A40C0DE0B71167A39175EA56C1FE96C89E5E7D30DAF2438A456159A20A54546869732069732074686520636F6E74656E742E818343A10127A104423131584077F3EACD11852C4BF9CB1D72FABE6B26FBA1D76092B2B5B7EC83B83557652264E69690DBC1172DDC0BF88411C0D25A507FDB247A20C40D5E245FABD3FC9EC106" + } +} diff --git a/src/test/resources/Examples/countersign/signed1-01.json b/src/test/resources/Examples/countersign/signed1-01.json new file mode 100644 index 0000000..7f343aa --- /dev/null +++ b/src/test/resources/Examples/countersign/signed1-01.json @@ -0,0 +1,55 @@ +{ + "title":"signed1-01: Sign 1 structure w/ two counter signatures", + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA", + "ctyp":0 + }, + "alg":"EdDSA", + "countersign":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + } + } + ] + } + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653145A2012703004054546869732069732074686520636F6E74656E742E", + "countersigners":[ + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726545A20127030043A101274054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"18([h'A201270300', {7: [h'A10127', {4: h'3131'}, h'6DAED158AFE4032E8DD477D3D2B7F667E7957AA8302BB5E568B4DCBCCE3CF0ED5A90F831351C85D6155A42A17CA1F25F501CC13F67108AE53BDA92DB88272E00'], 4: h'3131'}, h'546869732069732074686520636F6E74656E742E', h'7142FD2FF96D56DB85BEE905A76BA1D0B7321A95C8C4D3607C5781932B7AFB8711497DFA751BF40B58B3BCC32300B1487F3DB34085EEF013BF08F4A44D6FEF0D'])", + "cbor":"D28445A201270300A2078343A10127A10442313158406DAED158AFE4032E8DD477D3D2B7F667E7957AA8302BB5E568B4DCBCCE3CF0ED5A90F831351C85D6155A42A17CA1F25F501CC13F67108AE53BDA92DB88272E000442313154546869732069732074686520636F6E74656E742E58407142FD2FF96D56DB85BEE905A76BA1D0B7321A95C8C4D3607C5781932B7AFB8711497DFA751BF40B58B3BCC32300B1487F3DB34085EEF013BF08F4A44D6FEF0D" + } +} diff --git a/src/test/resources/Examples/countersign/signed1-02.json b/src/test/resources/Examples/countersign/signed1-02.json new file mode 100644 index 0000000..c50d2ac --- /dev/null +++ b/src/test/resources/Examples/countersign/signed1-02.json @@ -0,0 +1,74 @@ +{ + "title":"signed1-02: Sign 1 structure w/ two counter signatures", + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA", + "ctyp":0 + }, + "alg":"EdDSA", + "countersign":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + } + }, + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + } + ] + } + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653145A2012703004054546869732069732074686520636F6E74656E742E", + "countersigners":[ + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726545A20127030043A101274054546869732069732074686520636F6E74656E742E" + }, + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726545A20127030043A101264054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"18([h'A201270300', {7: [[h'A10127', {4: h'3131'}, h'6DAED158AFE4032E8DD477D3D2B7F667E7957AA8302BB5E568B4DCBCCE3CF0ED5A90F831351C85D6155A42A17CA1F25F501CC13F67108AE53BDA92DB88272E00'], [h'A10126', {4: h'3131'}, h'93487D09256A3EF4963719BA5CF101ACE2FC13D6314B49582171FFA4A1314DC93E4A4ADFA42A79E31B35D7304358585B41799678CE00CA47C3E023863923F8C8']], 4: h'3131'}, h'546869732069732074686520636F6E74656E742E', h'7142FD2FF96D56DB85BEE905A76BA1D0B7321A95C8C4D3607C5781932B7AFB8711497DFA751BF40B58B3BCC32300B1487F3DB34085EEF013BF08F4A44D6FEF0D'])", + "cbor":"D28445A201270300A207828343A10127A10442313158406DAED158AFE4032E8DD477D3D2B7F667E7957AA8302BB5E568B4DCBCCE3CF0ED5A90F831351C85D6155A42A17CA1F25F501CC13F67108AE53BDA92DB88272E008343A10126A104423131584093487D09256A3EF4963719BA5CF101ACE2FC13D6314B49582171FFA4A1314DC93E4A4ADFA42A79E31B35D7304358585B41799678CE00CA47C3E023863923F8C80442313154546869732069732074686520636F6E74656E742E58407142FD2FF96D56DB85BEE905A76BA1D0B7321A95C8C4D3607C5781932B7AFB8711497DFA751BF40B58B3BCC32300B1487F3DB34085EEF013BF08F4A44D6FEF0D" + } +} diff --git a/src/test/resources/Examples/countersign1/Encrypt-01.json b/src/test/resources/Examples/countersign1/Encrypt-01.json new file mode 100644 index 0000000..b9e4b61 --- /dev/null +++ b/src/test/resources/Examples/countersign1/Encrypt-01.json @@ -0,0 +1,61 @@ +{ + "title":"Encrypt-01 - Encrypt0 w/ one countersignature0", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ], + "countersign0":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unsent":{ + "alg":"EdDSA" + } + } + ] + } + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743043A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ], + "countersign0":[ + { + "ToBeSign_hex":"8571436F756E7465725369676E61747572653043A101014040582460973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A" + } + ] + }, + "output":{ + "cbor_diag":"16([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE', 9: h'7C6ABF5B370044E78852036A42126DC5683AA4C6C62D28FA395849C7401AD54C5E60F98437988EDB75925889852C9D910E59B095BC2E372B52D527B3C55A3D04'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A'])", + "cbor":"D08343A10101A2054C02D1F7E6F26C43D4868D87CE0958407C6ABF5B370044E78852036A42126DC5683AA4C6C62D28FA395849C7401AD54C5E60F98437988EDB75925889852C9D910E59B095BC2E372B52D527B3C55A3D04582460973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A" + } +} diff --git a/src/test/resources/Examples/countersign1/Enveloped-01.json b/src/test/resources/Examples/countersign1/Enveloped-01.json new file mode 100644 index 0000000..5ce04b2 --- /dev/null +++ b/src/test/resources/Examples/countersign1/Enveloped-01.json @@ -0,0 +1,65 @@ +{ + "title":"Enveloped-01: Enveloped w/ one Countersignature0 ", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ], + "countersign0":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unsent":{ + "alg":"EdDSA" + } + } + ] + } + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + "countersign0":[ + { + } + ] + } + ], + "countersign0":[ + { + "ToBeSign_hex":"8571436F756E7465725369676E61747572653043A101014040582460973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE', 9: h'4997FF3E4D0054A8851834A3F0493F594A6ED9CF52255BF6CEDC8C912B9C7A3FA91D62BABB2425242981752B42C4D95AF216401C8D8DCFF089DDA1B5219CCF0D'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A10101A2054C02D1F7E6F26C43D4868D87CE0958404997FF3E4D0054A8851834A3F0493F594A6ED9CF52255BF6CEDC8C912B9C7A3FA91D62BABB2425242981752B42C4D95AF216401C8D8DCFF089DDA1B5219CCF0D582460973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/countersign1/Enveloped-02.json b/src/test/resources/Examples/countersign1/Enveloped-02.json new file mode 100644 index 0000000..863957b --- /dev/null +++ b/src/test/resources/Examples/countersign1/Enveloped-02.json @@ -0,0 +1,61 @@ +{ + "title":"Enveloped-02: Enveloped w/ one Countersignature0 ", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "countersign0":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unsent":{ + "alg":"EdDSA" + } + } + ] + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + "countersign0":[ + { + "ToBeSign_hex":"8571436F756E7465725369676E61747572653040404040" + } + ] + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC', [[h'', {1: -6, 4: h'6F75722D736563726574', 9: h'96EA1993B2B2018D33C176FC43F2BC4DA7AFE0147748BE52A54F3C8784A79FE8127DB32017224E0B929D5C1D60B8989262D5D8F501A058F97B3FB9871C841C0D'}, h'']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC818340A30125044A6F75722D73656372657409584096EA1993B2B2018D33C176FC43F2BC4DA7AFE0147748BE52A54F3C8784A79FE8127DB32017224E0B929D5C1D60B8989262D5D8F501A058F97B3FB9871C841C0D40" + } +} diff --git a/src/test/resources/Examples/countersign1/mac-01.json b/src/test/resources/Examples/countersign1/mac-01.json new file mode 100644 index 0000000..e6f4323 --- /dev/null +++ b/src/test/resources/Examples/countersign1/mac-01.json @@ -0,0 +1,59 @@ +{ + "title":"MAC-01: MAC message w/ one countersignature0", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ], + "countersign0":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unsent":{ + "alg":"EdDSA" + } + } + ] + } + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ], + "countersign0":[ + { + "ToBeSign_hex":"8571436F756E7465725369676E61747572653043A10105404054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"97([h'A10105', {9: h'E818087173D1E6A0EB6D35F7F434239DB796DB0BFACBC9DE983DC8C80D02FBEC4B61ECC7200550A6FFAF7DD76326511EB7ABDC3C07D675566CC9B7A66D390C0B'}, h'546869732069732074686520636F6E74656E742E', h'2BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A10105A1095840E818087173D1E6A0EB6D35F7F434239DB796DB0BFACBC9DE983DC8C80D02FBEC4B61ECC7200550A6FFAF7DD76326511EB7ABDC3C07D675566CC9B7A66D390C0B54546869732069732074686520636F6E74656E742E58202BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/countersign1/mac0-01.json b/src/test/resources/Examples/countersign1/mac0-01.json new file mode 100644 index 0000000..e87d7ca --- /dev/null +++ b/src/test/resources/Examples/countersign1/mac0-01.json @@ -0,0 +1,59 @@ +{ + "title":"MAC0-01: MAC0 message w/ countersignature0", + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ], + "countersign0":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unsent":{ + "alg":"EdDSA" + } + } + ] + } + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ], + "countersign0":[ + { + "ToBeSign_hex":"8570436F756E7465725369676E617475726543A1010543A101274054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"17([h'A10105', {9: h'E818087173D1E6A0EB6D35F7F434239DB796DB0BFACBC9DE983DC8C80D02FBEC4B61ECC7200550A6FFAF7DD76326511EB7ABDC3C07D675566CC9B7A66D390C0B'}, h'546869732069732074686520636F6E74656E742E', h'A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58'])", + "cbor":"D18443A10105A1095840E818087173D1E6A0EB6D35F7F434239DB796DB0BFACBC9DE983DC8C80D02FBEC4B61ECC7200550A6FFAF7DD76326511EB7ABDC3C07D675566CC9B7A66D390C0B54546869732069732074686520636F6E74656E742E5820A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58" + } +} diff --git a/src/test/resources/Examples/countersign1/signed-01.json b/src/test/resources/Examples/countersign1/signed-01.json new file mode 100644 index 0000000..45851ca --- /dev/null +++ b/src/test/resources/Examples/countersign1/signed-01.json @@ -0,0 +1,61 @@ +{ + "title":"signed-01: Signed message w/ one countersignature0 on signer", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "protected":{ + "ctyp":0 + }, + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + }, + "countersign0":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unsent":{ + "alg":"EdDSA" + } + } + ] + } + } + ] + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E617475726543A1030043A101274054546869732069732074686520636F6E74656E742E", + "countersign0":[ + { + "ToBeSign_hex":"8571436F756E7465725369676E61747572653043A101274040584077F3EACD11852C4BF9CB1D72FABE6B26FBA1D76092B2B5B7EC83B83557652264E69690DBC1172DDC0BF88411C0D25A507FDB247A20C40D5E245FABD3FC9EC106" + } + ] + } + ] + }, + "output":{ + "cbor_diag":"98([h'A10300', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10127', {9: h'36739BEE3AA76D601E9C5F8AA391D9D67168F80DE3968A39FCA86CA00C7B9CC8C8239A6D5317C8CCFE1F6308931C739FFA151DF214604C7DA21B85BF0EE7D70F', 4: h'3131'}, h'77F3EACD11852C4BF9CB1D72FABE6B26FBA1D76092B2B5B7EC83B83557652264E69690DBC1172DDC0BF88411C0D25A507FDB247A20C40D5E245FABD3FC9EC106']]])", + "cbor":"D8628443A10300A054546869732069732074686520636F6E74656E742E818343A10127A209584036739BEE3AA76D601E9C5F8AA391D9D67168F80DE3968A39FCA86CA00C7B9CC8C8239A6D5317C8CCFE1F6308931C739FFA151DF214604C7DA21B85BF0EE7D70F04423131584077F3EACD11852C4BF9CB1D72FABE6B26FBA1D76092B2B5B7EC83B83557652264E69690DBC1172DDC0BF88411C0D25A507FDB247A20C40D5E245FABD3FC9EC106" + } +} diff --git a/src/test/resources/Examples/countersign1/signed-02.json b/src/test/resources/Examples/countersign1/signed-02.json new file mode 100644 index 0000000..395aaec --- /dev/null +++ b/src/test/resources/Examples/countersign1/signed-02.json @@ -0,0 +1,61 @@ +{ + "title":"signed-01: Signed message w/ one countersignature0 on signer", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "protected":{ + "ctyp":0 + }, + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + } + } + ], + "countersign0":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unsent":{ + "alg":"EdDSA" + } + } + ] + } + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E617475726543A1030043A101274054546869732069732074686520636F6E74656E742E" + } + ], + "countersign0":[ + { + "ToBeSign_hex":"8571436F756E7465725369676E61747572653043A10300404054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'A10300', {9: h'D3AFDA37684DE8EBE5F65805D85035083AA5A5CFCF4162411308E3846B8316752E9CE4BDC0ED5AE7B574B9A87D2480CD2FA3875D945908F9F68BDE8AF8106E0A'}, h'546869732069732074686520636F6E74656E742E', [[h'A10127', {4: h'3131'}, h'77F3EACD11852C4BF9CB1D72FABE6B26FBA1D76092B2B5B7EC83B83557652264E69690DBC1172DDC0BF88411C0D25A507FDB247A20C40D5E245FABD3FC9EC106']]])", + "cbor":"D8628443A10300A1095840D3AFDA37684DE8EBE5F65805D85035083AA5A5CFCF4162411308E3846B8316752E9CE4BDC0ED5AE7B574B9A87D2480CD2FA3875D945908F9F68BDE8AF8106E0A54546869732069732074686520636F6E74656E742E818343A10127A104423131584077F3EACD11852C4BF9CB1D72FABE6B26FBA1D76092B2B5B7EC83B83557652264E69690DBC1172DDC0BF88411C0D25A507FDB247A20C40D5E245FABD3FC9EC106" + } +} diff --git a/src/test/resources/Examples/countersign1/signed1-01.json b/src/test/resources/Examples/countersign1/signed1-01.json new file mode 100644 index 0000000..9254239 --- /dev/null +++ b/src/test/resources/Examples/countersign1/signed1-01.json @@ -0,0 +1,52 @@ +{ + "title":"signed1-01: Sign 1 structure w/ counter signature 0", + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA", + "ctyp":0 + }, + "alg":"EdDSA", + "countersign0":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unsent":{ + "alg":"EdDSA" + } + } + ] + } + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653145A2012703004054546869732069732074686520636F6E74656E742E", + "countersign0":[ + { + "ToBeSign_hex":"8571436F756E7465725369676E61747572653045A201270300404054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"18([h'A201270300', {9: h'845E748A28577E94928D91C06CC3835DE31F1E6C64A24219EFEB2C2DC167B17FC8E1F79966FB09271D38DF60D2749B20B6A09948042B0BB21D7F48AA325A6502', 4: h'3131'}, h'546869732069732074686520636F6E74656E742E', h'7142FD2FF96D56DB85BEE905A76BA1D0B7321A95C8C4D3607C5781932B7AFB8711497DFA751BF40B58B3BCC32300B1487F3DB34085EEF013BF08F4A44D6FEF0D'])", + "cbor":"D28445A201270300A2095840845E748A28577E94928D91C06CC3835DE31F1E6C64A24219EFEB2C2DC167B17FC8E1F79966FB09271D38DF60D2749B20B6A09948042B0BB21D7F48AA325A65020442313154546869732069732074686520636F6E74656E742E58407142FD2FF96D56DB85BEE905A76BA1D0B7321A95C8C4D3607C5781932B7AFB8711497DFA751BF40B58B3BCC32300B1487F3DB34085EEF013BF08F4A44D6FEF0D" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-256-01.json b/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-256-01.json new file mode 100644 index 0000000..9f82738 --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-256-01.json @@ -0,0 +1,50 @@ +{ + "title":"p256-hkdf-256-01: ECDH-ES direct w/ hkdf-sha-256 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "unsent":{ + "compressed": 0 + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3", + "C9CF4DF2FE6C632BF7886413" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"56074D506729CA40C4B4FE50C6439893", + "recipients":[ + { + "Context_hex":"840183F6F6F683F6F6F682188044A1013818", + "Secret_hex":"4B31712E096E5F20B4ECF9790FD8CC7C8B7E2C8AD90BDA81CB224F62C0E7B9A6" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'C9CF4DF2FE6C632BF7886413'}, h'7ADBE2709CA818FB415F1E5DF66F4E1A51053BA6D65A1A0C52A357DA7A644B8070A151B0', [[h'A1013818', {-1: {1: 2, -1: 1, -2: h'98F50A4FF6C05861C8860D13A638EA56C3F5AD7590BBFBF054E1C7B4D91D6280', -3: h'F01400B089867804B8E9FC96C3932161F1934F4223069170D924B7E03BF822BB'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'']]])", + "cbor":"D8608443A10101A1054CC9CF4DF2FE6C632BF788641358247ADBE2709CA818FB415F1E5DF66F4E1A51053BA6D65A1A0C52A357DA7A644B8070A151B0818344A1013818A220A40102200121582098F50A4FF6C05861C8860D13A638EA56C3F5AD7590BBFBF054E1C7B4D91D6280225820F01400B089867804B8E9FC96C3932161F1934F4223069170D924B7E03BF822BB0458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6540" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-256-02.json b/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-256-02.json new file mode 100644 index 0000000..01107ac --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-256-02.json @@ -0,0 +1,47 @@ +{ + "title":"p256-hkdf-256-02: ECDH-ES direct w/ hkdf-sha-256 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3", + "C9CF4DF2FE6C632BF7886413" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"29CAA7326B683A73C98777707866D8838A3ADC3E3F46C180C54C5AAF01F1CC0C", + "recipients":[ + { + "Context_hex":"840383F6F6F683F6F6F68219010044A1013818", + "Secret_hex":"4B31712E096E5F20B4ECF9790FD8CC7C8B7E2C8AD90BDA81CB224F62C0E7B9A6" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'C9CF4DF2FE6C632BF7886413'}, h'3E63CBB945790A3AAA7EBDA78779DFB31FF2EF54DD07C2447A224B6828D3781749A76A4E', [[h'A1013818', {-1: {1: 2, -1: 1, -2: h'98F50A4FF6C05861C8860D13A638EA56C3F5AD7590BBFBF054E1C7B4D91D6280', -3: h'F01400B089867804B8E9FC96C3932161F1934F4223069170D924B7E03BF822BB'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'']]])", + "cbor":"D8608443A10103A1054CC9CF4DF2FE6C632BF788641358243E63CBB945790A3AAA7EBDA78779DFB31FF2EF54DD07C2447A224B6828D3781749A76A4E818344A1013818A220A40102200121582098F50A4FF6C05861C8860D13A638EA56C3F5AD7590BBFBF054E1C7B4D91D6280225820F01400B089867804B8E9FC96C3932161F1934F4223069170D924B7E03BF822BB0458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6540" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-256-03.json b/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-256-03.json new file mode 100644 index 0000000..14a8e12 --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-256-03.json @@ -0,0 +1,47 @@ +{ + "title":"p256-hkdf-256-03: ECDH-ES direct w/ hkdf-sha-256 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3" + ] + }, + "intermediates":{ + "CEK_hex":"69220077533E89BDA8DA04814ACCB4703E8C9B009033C8F6A7E65DBB3BCA621B2CF279C6842998CB2B4D2BBAD2E6652824F424D7B7004CC2D6A7384086CF5FF8", + "recipients":[ + { + "Context_hex":"840783F6F6F683F6F6F68219020044A1013818", + "Secret_hex":"4B31712E096E5F20B4ECF9790FD8CC7C8B7E2C8AD90BDA81CB224F62C0E7B9A6" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'DB49CF4E1444B976C74D550A6134E1A69774AE0F132AD38FB5F409B25740EE564870FBAEB0EE01BA4A7E7DFD2BBBECBF21E5BB1B7CCD94210375D3461AF851EA', [[h'A1013818', {-1: {1: 2, -1: 1, -2: h'98F50A4FF6C05861C8860D13A638EA56C3F5AD7590BBFBF054E1C7B4D91D6280', -3: h'F01400B089867804B8E9FC96C3932161F1934F4223069170D924B7E03BF822BB'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E5840DB49CF4E1444B976C74D550A6134E1A69774AE0F132AD38FB5F409B25740EE564870FBAEB0EE01BA4A7E7DFD2BBBECBF21E5BB1B7CCD94210375D3461AF851EA818344A1013818A220A40102200121582098F50A4FF6C05861C8860D13A638EA56C3F5AD7590BBFBF054E1C7B4D91D6280225820F01400B089867804B8E9FC96C3932161F1934F4223069170D924B7E03BF822BB0458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6540" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-512-01.json b/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-512-01.json new file mode 100644 index 0000000..8396a14 --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-512-01.json @@ -0,0 +1,47 @@ +{ + "title":"p256-hkdf-512-01: ECDH-ES direct w/ hkdf-sha-512 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES-512" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3", + "C9CF4DF2FE6C632BF7886413" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"7EC6DB8FF17E392A6CB51579F8443976", + "recipients":[ + { + "Context_hex":"840183F6F6F683F6F6F682188044A1013819", + "Secret_hex":"4B31712E096E5F20B4ECF9790FD8CC7C8B7E2C8AD90BDA81CB224F62C0E7B9A6" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'C9CF4DF2FE6C632BF7886413'}, h'2ACAF2D3BABAFC8B5EE715168DF349AC10E9B82CE51B9E4834F64FF240BE4D49A022A99F', [[h'A1013819', {-1: {1: 2, -1: 1, -2: h'98F50A4FF6C05861C8860D13A638EA56C3F5AD7590BBFBF054E1C7B4D91D6280', -3: h'F01400B089867804B8E9FC96C3932161F1934F4223069170D924B7E03BF822BB'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'']]])", + "cbor":"D8608443A10101A1054CC9CF4DF2FE6C632BF788641358242ACAF2D3BABAFC8B5EE715168DF349AC10E9B82CE51B9E4834F64FF240BE4D49A022A99F818344A1013819A220A40102200121582098F50A4FF6C05861C8860D13A638EA56C3F5AD7590BBFBF054E1C7B4D91D6280225820F01400B089867804B8E9FC96C3932161F1934F4223069170D924B7E03BF822BB0458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6540" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-512-02.json b/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-512-02.json new file mode 100644 index 0000000..e0836e8 --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-512-02.json @@ -0,0 +1,47 @@ +{ + "title":"p256-hkdf-512-02: ECDH-ES direct w/ hkdf-sha-512 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES-512" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3", + "C9CF4DF2FE6C632BF7886413" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"4684AD00BE06914F7B74EE11F70E448D9192EE740182A674A665D7B4692A3EEB", + "recipients":[ + { + "Context_hex":"840383F6F6F683F6F6F68219010044A1013819", + "Secret_hex":"4B31712E096E5F20B4ECF9790FD8CC7C8B7E2C8AD90BDA81CB224F62C0E7B9A6" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'C9CF4DF2FE6C632BF7886413'}, h'2EC2BE4CDDA5838267A7E9529F9FF2CABA6449D03E7A148CA57582D76C8CE77F9D606A77', [[h'A1013819', {-1: {1: 2, -1: 1, -2: h'98F50A4FF6C05861C8860D13A638EA56C3F5AD7590BBFBF054E1C7B4D91D6280', -3: h'F01400B089867804B8E9FC96C3932161F1934F4223069170D924B7E03BF822BB'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'']]])", + "cbor":"D8608443A10103A1054CC9CF4DF2FE6C632BF788641358242EC2BE4CDDA5838267A7E9529F9FF2CABA6449D03E7A148CA57582D76C8CE77F9D606A77818344A1013819A220A40102200121582098F50A4FF6C05861C8860D13A638EA56C3F5AD7590BBFBF054E1C7B4D91D6280225820F01400B089867804B8E9FC96C3932161F1934F4223069170D924B7E03BF822BB0458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6540" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-512-03.json b/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-512-03.json new file mode 100644 index 0000000..d542a40 --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p256-hkdf-512-03.json @@ -0,0 +1,47 @@ +{ + "title":"p256-hkdf-512-03: ECDH-ES direct w/ hkdf-sha-512 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES-512" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3" + ] + }, + "intermediates":{ + "CEK_hex":"ECEAACB6A84FC9FAD2BB2E2C9520A036675BD6894CE41E826E0A5BB98D22403163739A28A2FDFED93675BCC8E46F40EDBEA98D15834F01418A43382D54510DCB", + "recipients":[ + { + "Context_hex":"840783F6F6F683F6F6F68219020044A1013819", + "Secret_hex":"4B31712E096E5F20B4ECF9790FD8CC7C8B7E2C8AD90BDA81CB224F62C0E7B9A6" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'D2B43858502332EC1D532133CBD7AE35018BF60A38BAC7ACC121C408EC56BD83D7599E49698E25CCD214B92EEF150284A8E2AE7301418AEB60968BE75EA9ADB2', [[h'A1013819', {-1: {1: 2, -1: 1, -2: h'98F50A4FF6C05861C8860D13A638EA56C3F5AD7590BBFBF054E1C7B4D91D6280', -3: h'F01400B089867804B8E9FC96C3932161F1934F4223069170D924B7E03BF822BB'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E5840D2B43858502332EC1D532133CBD7AE35018BF60A38BAC7ACC121C408EC56BD83D7599E49698E25CCD214B92EEF150284A8E2AE7301418AEB60968BE75EA9ADB2818344A1013819A220A40102200121582098F50A4FF6C05861C8860D13A638EA56C3F5AD7590BBFBF054E1C7B4D91D6280225820F01400B089867804B8E9FC96C3932161F1934F4223069170D924B7E03BF822BB0458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6540" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-256-01.json b/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-256-01.json new file mode 100644 index 0000000..ef47d4f --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-256-01.json @@ -0,0 +1,54 @@ +{ + "title":"p256-ss-hkdf-256-01: ECDH-SS direct w/ hkdf-sha-256 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-SS" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-256", + "x":"7cvYCcdU22WCwW1tZXR8iuzJLWGcd46xfxO1XJs-SPU", + "y":"DzhJXgz9RI6TseNmwEfLoNVns8UmvONsPzQDop2dKoo", + "d":"Uqr4fay_qYQykwcNCB2efj_NFaQRRQ-6fHZm763jt5w" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88523A8260B857D70B350027FD842B5E5947", + "D7923E677B71A3F40A179643" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"A6C2365CBC7672FBB5DB614B9A223AE3", + "recipients":[ + { + "Context_hex":"840183F6584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88523A8260B857D70B350027FD842B5E5947F683F6F6F682188044A101381A", + "Secret_hex":"8CA18423C89DB8842D5FD119F90E98650243AD77848BBBBE146FCFE2E802751D" + } + ] + }, + "output":{ + "cbor":"D8608443A10101A1054CD7923E677B71A3F40A179643582455DE918D6CA1E33BEDE48DB6E48678A8159214E76B2099E74AA52F250B940D13C4E7AB78818344A101381AA321A42001215820EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F52258200F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6535584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88523A8260B857D70B350027FD842B5E594740", + "cbor_diag":"96([h'A10101', {5: h'D7923E677B71A3F40A179643'}, h'55DE918D6CA1E33BEDE48DB6E48678A8159214E76B2099E74AA52F250B940D13C4E7AB78', [[h'A101381A', {-2: {-1: 1, -2: h'EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F5', -3: h'0F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65', -22: h'02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88523A8260B857D70B350027FD842B5E5947'}, h'']]])" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-256-02.json b/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-256-02.json new file mode 100644 index 0000000..9fa7f56 --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-256-02.json @@ -0,0 +1,54 @@ +{ + "title":"p256-ss-hkdf-256-02: ECDH-SS direct w/ hkdf-sha-256 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-SS" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-256", + "x":"7cvYCcdU22WCwW1tZXR8iuzJLWGcd46xfxO1XJs-SPU", + "y":"DzhJXgz9RI6TseNmwEfLoNVns8UmvONsPzQDop2dKoo", + "d":"Uqr4fay_qYQykwcNCB2efj_NFaQRRQ-6fHZm763jt5w" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E885299E58C2F0F717D59C6123210A16AD920", + "2DE17507BE74667DA9B7B8AC" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"A191090130A6FCBAFF6EEC5B70795265B7C18D66F8CDB99E169B4D3332C7DF4E", + "recipients":[ + { + "Context_hex":"840383F6584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E885299E58C2F0F717D59C6123210A16AD920F683F6F6F68219010044A101381A", + "Secret_hex":"8CA18423C89DB8842D5FD119F90E98650243AD77848BBBBE146FCFE2E802751D" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'2DE17507BE74667DA9B7B8AC'}, h'DA8955ED1647756DE4C6846FC3581A8EB2176C583363AFCE78D3868F282F221D20ED6063', [[h'A101381A', {-2: {-1: 1, -2: h'EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F5', -3: h'0F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65', -22: h'02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E885299E58C2F0F717D59C6123210A16AD920'}, h'']]])", + "cbor":"D8608443A10103A1054C2DE17507BE74667DA9B7B8AC5824DA8955ED1647756DE4C6846FC3581A8EB2176C583363AFCE78D3868F282F221D20ED6063818344A101381AA321A42001215820EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F52258200F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6535584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E885299E58C2F0F717D59C6123210A16AD92040" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-256-03.json b/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-256-03.json new file mode 100644 index 0000000..e244edb --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-256-03.json @@ -0,0 +1,54 @@ +{ + "title":"p256-ss-hkdf-256-03: ECDH-SS direct w/ hkdf-sha-256 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-SS" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-256", + "x":"7cvYCcdU22WCwW1tZXR8iuzJLWGcd46xfxO1XJs-SPU", + "y":"DzhJXgz9RI6TseNmwEfLoNVns8UmvONsPzQDop2dKoo", + "d":"Uqr4fay_qYQykwcNCB2efj_NFaQRRQ-6fHZm763jt5w" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852271942C33FFD7A1BF85EBE223D0E672B" + ] + }, + "intermediates":{ + "CEK_hex":"9F650F1BCC7AB969CF53C3CEE028564307FC197F305FD4B33E2AAEC59A23136AF834A1013327A1141E443D0CFCBB183CDBA8FB749590A7EEC4330641E9D9E64C", + "recipients":[ + { + "Context_hex":"840783F6584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852271942C33FFD7A1BF85EBE223D0E672BF683F6F6F68219020044A101381A", + "Secret_hex":"8CA18423C89DB8842D5FD119F90E98650243AD77848BBBBE146FCFE2E802751D" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'D0DFD9778CCAA9D7ABEB317FCA2316BB0480DEA2B436B171639693DA334DCCA476A0FF8CD5556DA61E415F4B182F305103375E25C7C9650E917C6CD1E1E5F321', [[h'A101381A', {-2: {-1: 1, -2: h'EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F5', -3: h'0F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65', -22: h'02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852271942C33FFD7A1BF85EBE223D0E672B'}, h'']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E5840D0DFD9778CCAA9D7ABEB317FCA2316BB0480DEA2B436B171639693DA334DCCA476A0FF8CD5556DA61E415F4B182F305103375E25C7C9650E917C6CD1E1E5F321818344A101381AA321A42001215820EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F52258200F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6535584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852271942C33FFD7A1BF85EBE223D0E672B40" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-512-01.json b/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-512-01.json new file mode 100644 index 0000000..f29de36 --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-512-01.json @@ -0,0 +1,54 @@ +{ + "title":"p256-ss-hkdf-512-01: ECDH-SS direct w/ hkdf-sha-512 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-SS-512" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-256", + "x":"7cvYCcdU22WCwW1tZXR8iuzJLWGcd46xfxO1XJs-SPU", + "y":"DzhJXgz9RI6TseNmwEfLoNVns8UmvONsPzQDop2dKoo", + "d":"Uqr4fay_qYQykwcNCB2efj_NFaQRRQ-6fHZm763jt5w" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852423BED8B225D042ABE4480A2DD138832", + "77745450192BD611F420713E" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"68A0561BEE003BF12EFB5398E61EBBA6", + "recipients":[ + { + "Context_hex":"840183F6584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852423BED8B225D042ABE4480A2DD138832F683F6F6F682188044A101381B", + "Secret_hex":"8CA18423C89DB8842D5FD119F90E98650243AD77848BBBBE146FCFE2E802751D" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'77745450192BD611F420713E'}, h'45CD1DEF3EF7FF69F779805844AAAB20A1A9B672BBC16C601D5AC3AB2560ABA7A795D5C5', [[h'A101381B', {-2: {-1: 1, -2: h'EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F5', -3: h'0F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65', -22: h'02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852423BED8B225D042ABE4480A2DD138832'}, h'']]])", + "cbor":"D8608443A10101A1054C77745450192BD611F420713E582445CD1DEF3EF7FF69F779805844AAAB20A1A9B672BBC16C601D5AC3AB2560ABA7A795D5C5818344A101381BA321A42001215820EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F52258200F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6535584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852423BED8B225D042ABE4480A2DD13883240" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-512-02.json b/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-512-02.json new file mode 100644 index 0000000..16dd124 --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-512-02.json @@ -0,0 +1,54 @@ +{ + "title":"p256-ss-hkdf-512-02: ECDH-SS direct w/ hkdf-sha-512 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-SS-256" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-256", + "x":"7cvYCcdU22WCwW1tZXR8iuzJLWGcd46xfxO1XJs-SPU", + "y":"DzhJXgz9RI6TseNmwEfLoNVns8UmvONsPzQDop2dKoo", + "d":"Uqr4fay_qYQykwcNCB2efj_NFaQRRQ-6fHZm763jt5w" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852A6423991E18819CCCB2EE6FD6517BC06", + "02EC966BD19F50A11CA20212" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"0B214AAE7CE932188E308FE1F60EDFA77B0B3B87DF0ACC2E090972D6FE9377C0", + "recipients":[ + { + "Context_hex":"840383F6584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852A6423991E18819CCCB2EE6FD6517BC06F683F6F6F68219010044A101381A", + "Secret_hex":"8CA18423C89DB8842D5FD119F90E98650243AD77848BBBBE146FCFE2E802751D" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'02EC966BD19F50A11CA20212'}, h'6773B51092493E6174CB91B33F649947E2376328FB410E297895709E9E4C62092BD32F91', [[h'A101381A', {-2: {-1: 1, -2: h'EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F5', -3: h'0F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65', -22: h'02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852A6423991E18819CCCB2EE6FD6517BC06'}, h'']]])", + "cbor":"D8608443A10103A1054C02EC966BD19F50A11CA2021258246773B51092493E6174CB91B33F649947E2376328FB410E297895709E9E4C62092BD32F91818344A101381AA321A42001215820EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F52258200F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6535584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852A6423991E18819CCCB2EE6FD6517BC0640" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-512-03.json b/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-512-03.json new file mode 100644 index 0000000..4098f05 --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p256-ss-hkdf-512-03.json @@ -0,0 +1,54 @@ +{ + "title":"p256-ss-hkdf-512-03: ECDH-SS direct w/ hkdf-sha-512 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-SS-512" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-256", + "x":"7cvYCcdU22WCwW1tZXR8iuzJLWGcd46xfxO1XJs-SPU", + "y":"DzhJXgz9RI6TseNmwEfLoNVns8UmvONsPzQDop2dKoo", + "d":"Uqr4fay_qYQykwcNCB2efj_NFaQRRQ-6fHZm763jt5w" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852D8D30979D9C0217A424941B5CA02A3AA" + ] + }, + "intermediates":{ + "CEK_hex":"AFBAC0E6057434A19B9B497A3364A1E91490DD105186FBE0D7982495EFF41A60F7B3E609909A3FDDB8E5CAA5FEFC6381FB1FBCB27A06A10CFA4E87DFB0C3CFFC", + "recipients":[ + { + "Context_hex":"840783F6584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852D8D30979D9C0217A424941B5CA02A3AAF683F6F6F68219020044A101381B", + "Secret_hex":"8CA18423C89DB8842D5FD119F90E98650243AD77848BBBBE146FCFE2E802751D" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'CED9C9DBD280362DAEBB48CDD67239A25CD2DD96FE60C3001DBF353A7A36F1EA34C7ED84FC18757E12444A6AD5C3B3F7416651C6A3CDD2A9D9E9844C5F46CF84', [[h'A101381B', {-2: {-1: 1, -2: h'EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F5', -3: h'0F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65', -22: h'02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852D8D30979D9C0217A424941B5CA02A3AA'}, h'']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E5840CED9C9DBD280362DAEBB48CDD67239A25CD2DD96FE60C3001DBF353A7A36F1EA34C7ED84FC18757E12444A6AD5C3B3F7416651C6A3CDD2A9D9E9844C5F46CF84818344A101381BA321A42001215820EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F52258200F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6535584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852D8D30979D9C0217A424941B5CA02A3AA40" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-256-01.json b/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-256-01.json new file mode 100644 index 0000000..6c28e73 --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-256-01.json @@ -0,0 +1,48 @@ +{ + "title":"p521-hkdf-256-01: ECDH-ES direct w/ hkdf-sha-256 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-ES" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E885252908DF901D1581A045444DD996E1704B9B6", + "3082660901A9B9CD87AACB71" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"31D3ED9B92E9AC877FDBE347D99F1CD7", + "recipients":[ + { + "Context_hex":"840183F6F6F683F6F6F682188044A1013818", + "Secret_hex":"016E8DA1F5F19FDEBF29D358D3CDBE5EA8B9178A7AD3F0DB6BEB110002EF597BC67CEC1472FD1079143300176214E2C61300344EBDA4740D0F4A29521011C5DF5F48" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'3082660901A9B9CD87AACB71'}, h'E4BB61A1BF4DB80CD9345BB7AA9D46844763AC0B242F09D43744B83D8C48C4E87BC90775', [[h'A1013818', {-1: {1: 2, -1: 3, -2: h'007490FF6DC6C8FAA34D07627DDD725EF11B8D901C931DBF3BC2EB4A9445CEDC752A62A4DC63CD80BDDDF5A0C7CB164479C4ADAABAAC7A78D03E0EC8496D4740FCF4', -3: h'019D3F45929FC96E122FCEBB8FC426DA84A36EF177AFDC894DC111ACD7AF9F7120EFC0D0BE7F48716DB7EB30B65ADEDF5294651E3BDD2ED921EA0A7A88FC77D3394D'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'']]])", + "cbor":"D8608443A10101A1054C3082660901A9B9CD87AACB715824E4BB61A1BF4DB80CD9345BB7AA9D46844763AC0B242F09D43744B83D8C48C4E87BC90775818344A1013818A220A401022003215842007490FF6DC6C8FAA34D07627DDD725EF11B8D901C931DBF3BC2EB4A9445CEDC752A62A4DC63CD80BDDDF5A0C7CB164479C4ADAABAAC7A78D03E0EC8496D4740FCF4225842019D3F45929FC96E122FCEBB8FC426DA84A36EF177AFDC894DC111ACD7AF9F7120EFC0D0BE7F48716DB7EB30B65ADEDF5294651E3BDD2ED921EA0A7A88FC77D3394D0458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6540" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-256-02.json b/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-256-02.json new file mode 100644 index 0000000..4cd8178 --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-256-02.json @@ -0,0 +1,48 @@ +{ + "title":"p521-hkdf-256-02: ECDH-ES direct w/ hkdf-sha-256 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-ES" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88527FAC271A4C7EA34B7E28D7BBB54C682BED7A", + "512C9CC879517ADCF0FA768E" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"1CC58ABC05DFD9128650821AAB212BA7E204D43DD9CF9FADBDCFEC7DD7454982", + "recipients":[ + { + "Context_hex":"840383F6F6F683F6F6F68219010044A1013818", + "Secret_hex":"00BE0D3F8079635BBA8C5997158786A03FD3DD7F176CB006B91145695609376A9F9A159160268D32F4BB6F3AA6066EEA2C07ECF63D569BB242190A82AE14DEDD8867" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'512C9CC879517ADCF0FA768E'}, h'E4DAB91AE49A086F731CB0C9A4741A519033156C3CFA6B80FA8D5CB705A0676E5561C7B6', [[h'A1013818', {-1: {1: 2, -1: 3, -2: h'0186A55E1A9E1937CED31F184623A7BBAE115CFADB9A05A2913F67BB4D66B591EFC30D7C5857111837673D2050FC3AB3FE58697CED8A6FEC883107F1842ACDE6F9AA', -3: h'002034BC5484085C4DB6E98B381193B13C1C94A58BB14EDC72A7E9EDFED30F05F9A10EA7B61391B06A6D7711339B843F71238B4A3C3146334188C0B8E4804CD65D78'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'']]])", + "cbor":"D8608443A10103A1054C512C9CC879517ADCF0FA768E5824E4DAB91AE49A086F731CB0C9A4741A519033156C3CFA6B80FA8D5CB705A0676E5561C7B6818344A1013818A220A4010220032158420186A55E1A9E1937CED31F184623A7BBAE115CFADB9A05A2913F67BB4D66B591EFC30D7C5857111837673D2050FC3AB3FE58697CED8A6FEC883107F1842ACDE6F9AA225842002034BC5484085C4DB6E98B381193B13C1C94A58BB14EDC72A7E9EDFED30F05F9A10EA7B61391B06A6D7711339B843F71238B4A3C3146334188C0B8E4804CD65D780458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6540" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-256-03.json b/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-256-03.json new file mode 100644 index 0000000..1ecedaa --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-256-03.json @@ -0,0 +1,48 @@ +{ + "title":"p521-hkdf-256-03: ECDH-ES direct w/ hkdf-sha-256 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-ES" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88522CD81CA6C3B47139724AD1D4309098EC95C7" + ] + }, + "intermediates":{ + "CEK_hex":"9A3F086047F3B11D76CA2CC22D059DB1E49A19A0CEA662CC248315322B360DAF9C8B41E5F254A4E4325C77AE211F3D584C4D0AA88910E38C563E478A1F4D463B", + "recipients":[ + { + "Context_hex":"840783F6F6F683F6F6F68219020044A1013818", + "Secret_hex":"003271CD2F2F0962656429F6837FAFD57FA79A5A65679D5F48B2ED478EE808ED3A74EB465932289860AD7C119D3AB74BDE63F8618F99D86279AACFD4B596C450F16C" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'CA8E6BC30FA2433A04311CBE75AC2994C5BCCE073B00116E2545A7278F194782F12B5E7B7A449735762B2882498F2F633FF31F37C8961A23B4B119103AAA3A36', [[h'A1013818', {-1: {1: 2, -1: 3, -2: h'000E2CE3AA90FB69E4C648BABA21A8B616ACF6D9F2AF7699888DD8FF9A6DF164B059F6842AD27DD24F1893FAC8D5C03283CF60211F9D17138662DC8F1547C289C2A5', -3: h'0084D56A168242745AA99EFDA9D58D4439EEC0A6AA434918BC549F57F31F38B2C0A80FF0B8754367F315D1BE1D805BB95DA3880E01035E760E92CA8517D313F591EE'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E5840CA8E6BC30FA2433A04311CBE75AC2994C5BCCE073B00116E2545A7278F194782F12B5E7B7A449735762B2882498F2F633FF31F37C8961A23B4B119103AAA3A36818344A1013818A220A401022003215842000E2CE3AA90FB69E4C648BABA21A8B616ACF6D9F2AF7699888DD8FF9A6DF164B059F6842AD27DD24F1893FAC8D5C03283CF60211F9D17138662DC8F1547C289C2A52258420084D56A168242745AA99EFDA9D58D4439EEC0A6AA434918BC549F57F31F38B2C0A80FF0B8754367F315D1BE1D805BB95DA3880E01035E760E92CA8517D313F591EE0458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6540" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-512-01.json b/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-512-01.json new file mode 100644 index 0000000..3f6a173 --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-512-01.json @@ -0,0 +1,48 @@ +{ + "title":"p521-hkdf-512-01: ECDH-ES direct w/ hkdf-sha-512 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-ES-512" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88526B37FD0B58734CA925A389AD361ECEF28358", + "CFDC1CA6D690CF1964458D42" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"4305A0DB93F7430FB33C4C3F242F71E7", + "recipients":[ + { + "Context_hex":"840183F6F6F683F6F6F682188044A1013819", + "Secret_hex":"0160609877A8E8E9DED36EF765FD42D1F75AFF205585F0D9EE756CE26ED61C965FD4253025AB54650B1F81D88B331BE6264034EA1B3BCC7F041685CE095936674DF5" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'CFDC1CA6D690CF1964458D42'}, h'B994CCC29C6490FEE1AD6EA997248CDFCF7BE6F7283224006B5E7BBE9958435CFA553D0F', [[h'A1013819', {-1: {1: 2, -1: 3, -2: h'00F11B8FBCB163447DE1FBB059CB56B46654CAAB99D13BA0FB5858783E89990754729682F04F6AC4AC3DD36451940AFA933D373BF1D7015D4FD7530DD48DED8CAA8C', -3: h'00A806098B016CDBB9E66042C2C30C7C18F8AA7F5851517FA1B154E42EB2C69EAD1A063457F37A996B2E139193F1AB3B5B5CD345288D7375F35F6E1DC515F1B05876'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'']]])", + "cbor":"D8608443A10101A1054CCFDC1CA6D690CF1964458D425824B994CCC29C6490FEE1AD6EA997248CDFCF7BE6F7283224006B5E7BBE9958435CFA553D0F818344A1013819A220A40102200321584200F11B8FBCB163447DE1FBB059CB56B46654CAAB99D13BA0FB5858783E89990754729682F04F6AC4AC3DD36451940AFA933D373BF1D7015D4FD7530DD48DED8CAA8C22584200A806098B016CDBB9E66042C2C30C7C18F8AA7F5851517FA1B154E42EB2C69EAD1A063457F37A996B2E139193F1AB3B5B5CD345288D7375F35F6E1DC515F1B058760458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6540" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-512-02.json b/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-512-02.json new file mode 100644 index 0000000..bc14fdb --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-512-02.json @@ -0,0 +1,48 @@ +{ + "title":"p521-hkdf-512-02: ECDH-ES direct w/ hkdf-sha-512 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-ES-512" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E885238FB137F6C20764D89E26452937675B5E3B4", + "E89FD3534E1ABAF69C65CFE0" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"FA902BA75151B03E11DDEED3CD7AD960E00BF9167C530F26CDD109B9B9ECA6A5", + "recipients":[ + { + "Context_hex":"840383F6F6F683F6F6F68219010044A1013819", + "Secret_hex":"01905FA93AA5FB44C53AABA86D94CCE215FFDD03D362D257B32366A424BCC89050D8515DA5D1AE13AA253233A52DC6F8A7EF2209B784E527B752161EAAB070164F04" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'E89FD3534E1ABAF69C65CFE0'}, h'1187EFE3B75F733299723024E3A1335962AB622D69587A716851ABEBD303977509DD491C', [[h'A1013819', {-1: {1: 2, -1: 3, -2: h'01E3A6C126F1C3C27C38FC723A696C5E233F504D911516AE2899595EB6376A71AEE95911EDE9F372205A5BAFDA006B6F0EDCC6288705C6BCE357B537E54863B93C4A', -3: h'0066E0423D3BEFC80194FC9A0EB7D9AE63F7F7CDE74030A79D9F3E9CEDF221E1999605CF908ED44515B8F6B8BC816325380960383EF3EE8D08635FF0305BE6F5164B'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'']]])", + "cbor":"D8608443A10103A1054CE89FD3534E1ABAF69C65CFE058241187EFE3B75F733299723024E3A1335962AB622D69587A716851ABEBD303977509DD491C818344A1013819A220A40102200321584201E3A6C126F1C3C27C38FC723A696C5E233F504D911516AE2899595EB6376A71AEE95911EDE9F372205A5BAFDA006B6F0EDCC6288705C6BCE357B537E54863B93C4A2258420066E0423D3BEFC80194FC9A0EB7D9AE63F7F7CDE74030A79D9F3E9CEDF221E1999605CF908ED44515B8F6B8BC816325380960383EF3EE8D08635FF0305BE6F5164B0458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6540" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-512-03.json b/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-512-03.json new file mode 100644 index 0000000..3cb906f --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p521-hkdf-512-03.json @@ -0,0 +1,48 @@ +{ + "title":"p521-hkdf-512-03: ECDH-ES direct w/ hkdf-sha-512 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-ES-512" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852C2772BFB570B2D11D2CD3C5B6888AFEF8F5B" + ] + }, + "intermediates":{ + "CEK_hex":"CD28211FBA9D80140734809A36EF7AC2E8C464EAA8E5B8F27C818A1514EFC627430FEA6B89B1DA2C29F3707ADD9F88A8D86FE410191DCBD94B7881B3E4B93FCD", + "recipients":[ + { + "Context_hex":"840783F6F6F683F6F6F68219020044A1013819", + "Secret_hex":"0031941A07BA094D6021FD6EADDAE42B011ECEF928B31D4E7484EBD4FE3E23AF270781816480F83C98B8BAED8CB1593DCBE52AA2AA6149D62890FE1C5C761438B78C" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'F443D77D89327661A654A52E6C055BDD9CB163E2520EBC152E4A0BC7424950EA795F6FB2B5677CEFD92CDFC6EED22BA6EDCEDA8D2D55A495238A2D29C4C41173', [[h'A1013819', {-1: {1: 2, -1: 3, -2: h'0003ABE163C86CFC288CB6E6E2FB0199A36D460016D1B5AAFB46C9895C646398FD5C194CA82BE9A4317F4E3EEF318A406F0D7BBA653B3B564B1B262C13B02EB96FEB', -3: h'005D76FBD13FCA10C40CF206D8757BFFDDCE98417D3E221A8104F61B21B9F219D6069801AE8B8DE19CC704E9859E7EA991C0FDDA9AA974411AE44DC5FD41BBDC3809'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E5840F443D77D89327661A654A52E6C055BDD9CB163E2520EBC152E4A0BC7424950EA795F6FB2B5677CEFD92CDFC6EED22BA6EDCEDA8D2D55A495238A2D29C4C41173818344A1013819A220A4010220032158420003ABE163C86CFC288CB6E6E2FB0199A36D460016D1B5AAFB46C9895C646398FD5C194CA82BE9A4317F4E3EEF318A406F0D7BBA653B3B564B1B262C13B02EB96FEB225842005D76FBD13FCA10C40CF206D8757BFFDDCE98417D3E221A8104F61B21B9F219D6069801AE8B8DE19CC704E9859E7EA991C0FDDA9AA974411AE44DC5FD41BBDC38090458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6540" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-256-01.json b/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-256-01.json new file mode 100644 index 0000000..ca0d43f --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-256-01.json @@ -0,0 +1,55 @@ +{ + "title":"p521-ss-hkdf-256-01: ECDH-SS direct w/ hkdf-sha-256 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-SS" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-521", + "x":"APP1tIC1Ey2__4aekg06nicpK3uvQELX7HPaZUXYf2qd-YCYZlR7L6RqW0CiGjNv9uyJ5srxdRb_St87pwbfZx4B", + "y":"AQMe7-xEu5s49sLiFXIGsY4FVgAxFe6HW1nT3sqOcqgkFs0_Y7fWpDkAGLc1Og3Qqmt7-8-7d0fTW1nNtf5RJqdM", + "d":"Af9IsRGlT6A-iPBgaSukjyB6A0LP6GTcw9wO-e71yUfMbb9YJMnjYFq1DBjjvxEyI35mjP-k115wW0q9LxYPvlRt" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E885252908DF901D1581A045444DD996E1704", + "B9B63082660901A9B9CD87AA" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"50E11567E9F580D3FC754ED3619961F1", + "recipients":[ + { + "Context_hex":"840183F6584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E885252908DF901D1581A045444DD996E1704F683F6F6F682188044A101381A", + "Secret_hex":"017B26D9F28ADF910A8D0B7BDBC3A57682E2D267E4D14473AC38F4FDA6FF9B90CA6FB9D3A4BD4BC6235111D134223DAFB0B5399C4CD42D650ACDBDF0017D5F44F843" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'B9B63082660901A9B9CD87AA'}, h'4275EEA3F025755DC242556BD66FC87DA27B70C99228F16CA9661A37C813019F562DA26C', [[h'A101381A', {-2: {-1: 3, -2: h'00F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E01', -3: h'01031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65', -22: h'02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E885252908DF901D1581A045444DD996E1704'}, h'']]])", + "cbor":"D8608443A10101A1054CB9B63082660901A9B9CD87AA58244275EEA3F025755DC242556BD66FC87DA27B70C99228F16CA9661A37C813019F562DA26C818344A101381AA321A4200321584200F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E0122584201031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6535584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E885252908DF901D1581A045444DD996E170440" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-256-02.json b/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-256-02.json new file mode 100644 index 0000000..f3ed1ef --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-256-02.json @@ -0,0 +1,55 @@ +{ + "title":"p521-ss-hkdf-256-02: ECDH-SS direct w/ hkdf-sha-256 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-SS" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-521", + "x":"APP1tIC1Ey2__4aekg06nicpK3uvQELX7HPaZUXYf2qd-YCYZlR7L6RqW0CiGjNv9uyJ5srxdRb_St87pwbfZx4B", + "y":"AQMe7-xEu5s49sLiFXIGsY4FVgAxFe6HW1nT3sqOcqgkFs0_Y7fWpDkAGLc1Og3Qqmt7-8-7d0fTW1nNtf5RJqdM", + "d":"Af9IsRGlT6A-iPBgaSukjyB6A0LP6GTcw9wO-e71yUfMbb9YJMnjYFq1DBjjvxEyI35mjP-k115wW0q9LxYPvlRt" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88527FAC271A4C7EA34B7E28D7BBB54C682B", + "ED7A512C9CC879517ADCF0FA" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"D4E7E01D9CD91AA590497BA046849421C18A5025C0CEFE43CF18DAAFA96413EB", + "recipients":[ + { + "Context_hex":"840383F6584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88527FAC271A4C7EA34B7E28D7BBB54C682BF683F6F6F68219010044A101381A", + "Secret_hex":"017B26D9F28ADF910A8D0B7BDBC3A57682E2D267E4D14473AC38F4FDA6FF9B90CA6FB9D3A4BD4BC6235111D134223DAFB0B5399C4CD42D650ACDBDF0017D5F44F843" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'ED7A512C9CC879517ADCF0FA'}, h'FF69D38AEC771937C07062F6BF3D9DCFF98ACED55D16DB40BC33C1A90AA456D82AC874D0', [[h'A101381A', {-2: {-1: 3, -2: h'00F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E01', -3: h'01031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65', -22: h'02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88527FAC271A4C7EA34B7E28D7BBB54C682B'}, h'']]])", + "cbor":"D8608443A10103A1054CED7A512C9CC879517ADCF0FA5824FF69D38AEC771937C07062F6BF3D9DCFF98ACED55D16DB40BC33C1A90AA456D82AC874D0818344A101381AA321A4200321584200F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E0122584201031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6535584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88527FAC271A4C7EA34B7E28D7BBB54C682B40" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-256-03.json b/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-256-03.json new file mode 100644 index 0000000..76c9e4b --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-256-03.json @@ -0,0 +1,55 @@ +{ + "title":"p521-ss-hkdf-256-03: ECDH-SS direct w/ hkdf-sha-256 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-SS" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-521", + "x":"APP1tIC1Ey2__4aekg06nicpK3uvQELX7HPaZUXYf2qd-YCYZlR7L6RqW0CiGjNv9uyJ5srxdRb_St87pwbfZx4B", + "y":"AQMe7-xEu5s49sLiFXIGsY4FVgAxFe6HW1nT3sqOcqgkFs0_Y7fWpDkAGLc1Og3Qqmt7-8-7d0fTW1nNtf5RJqdM", + "d":"Af9IsRGlT6A-iPBgaSukjyB6A0LP6GTcw9wO-e71yUfMbb9YJMnjYFq1DBjjvxEyI35mjP-k115wW0q9LxYPvlRt" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88522CD81CA6C3B47139724AD1D4309098EC" + ] + }, + "intermediates":{ + "CEK_hex":"74840B78F7E13E9182A4D9BC68D25B99DD166F3EAC240D4C37D9D50817257E2044D76BB28B061B3E0A2CACDBEE892C58C3815FF4090C754F8AE89A4A0E1C4CB1", + "recipients":[ + { + "Context_hex":"840783F6584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88522CD81CA6C3B47139724AD1D4309098ECF683F6F6F68219020044A101381A", + "Secret_hex":"017B26D9F28ADF910A8D0B7BDBC3A57682E2D267E4D14473AC38F4FDA6FF9B90CA6FB9D3A4BD4BC6235111D134223DAFB0B5399C4CD42D650ACDBDF0017D5F44F843" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'AAC325E699B439C23393F5C233300408FBFB13984AF9086680B0D7A1BDA06098925AE520899034F2594989741850A780EB05C1D3839B36EB9FE0A258BCB04454', [[h'A101381A', {-2: {-1: 3, -2: h'00F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E01', -3: h'01031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65', -22: h'02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88522CD81CA6C3B47139724AD1D4309098EC'}, h'']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E5840AAC325E699B439C23393F5C233300408FBFB13984AF9086680B0D7A1BDA06098925AE520899034F2594989741850A780EB05C1D3839B36EB9FE0A258BCB04454818344A101381AA321A4200321584200F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E0122584201031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6535584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88522CD81CA6C3B47139724AD1D4309098EC40" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-512-01.json b/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-512-01.json new file mode 100644 index 0000000..305eed5 --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-512-01.json @@ -0,0 +1,55 @@ +{ + "title":"p521-ss-hkdf-512-01: ECDH-SS direct w/ hkdf-sha-512 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-SS-512" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-521", + "x":"APP1tIC1Ey2__4aekg06nicpK3uvQELX7HPaZUXYf2qd-YCYZlR7L6RqW0CiGjNv9uyJ5srxdRb_St87pwbfZx4B", + "y":"AQMe7-xEu5s49sLiFXIGsY4FVgAxFe6HW1nT3sqOcqgkFs0_Y7fWpDkAGLc1Og3Qqmt7-8-7d0fTW1nNtf5RJqdM", + "d":"Af9IsRGlT6A-iPBgaSukjyB6A0LP6GTcw9wO-e71yUfMbb9YJMnjYFq1DBjjvxEyI35mjP-k115wW0q9LxYPvlRt" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88526B37FD0B58734CA925A389AD361ECEF2", + "8358CFDC1CA6D690CF196445" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"58416EE0661D1292A5B52743134E3648", + "recipients":[ + { + "Context_hex":"840183F6584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88526B37FD0B58734CA925A389AD361ECEF2F683F6F6F682188044A101381B", + "Secret_hex":"017B26D9F28ADF910A8D0B7BDBC3A57682E2D267E4D14473AC38F4FDA6FF9B90CA6FB9D3A4BD4BC6235111D134223DAFB0B5399C4CD42D650ACDBDF0017D5F44F843" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'8358CFDC1CA6D690CF196445'}, h'F4AC868505C818DB73A2F657299B1D72D5E6D511B1FEDA6FDA5B91BB899A48F85BE2C229', [[h'A101381B', {-2: {-1: 3, -2: h'00F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E01', -3: h'01031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65', -22: h'02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88526B37FD0B58734CA925A389AD361ECEF2'}, h'']]])", + "cbor":"D8608443A10101A1054C8358CFDC1CA6D690CF1964455824F4AC868505C818DB73A2F657299B1D72D5E6D511B1FEDA6FDA5B91BB899A48F85BE2C229818344A101381BA321A4200321584200F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E0122584201031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6535584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88526B37FD0B58734CA925A389AD361ECEF240" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-512-02.json b/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-512-02.json new file mode 100644 index 0000000..e70ccf9 --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-512-02.json @@ -0,0 +1,55 @@ +{ + "title":"p521-ss-hkdf-512-02: ECDH-SS direct w/ hkdf-sha-512 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-SS-512" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-521", + "x":"APP1tIC1Ey2__4aekg06nicpK3uvQELX7HPaZUXYf2qd-YCYZlR7L6RqW0CiGjNv9uyJ5srxdRb_St87pwbfZx4B", + "y":"AQMe7-xEu5s49sLiFXIGsY4FVgAxFe6HW1nT3sqOcqgkFs0_Y7fWpDkAGLc1Og3Qqmt7-8-7d0fTW1nNtf5RJqdM", + "d":"Af9IsRGlT6A-iPBgaSukjyB6A0LP6GTcw9wO-e71yUfMbb9YJMnjYFq1DBjjvxEyI35mjP-k115wW0q9LxYPvlRt" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E885238FB137F6C20764D89E26452937675B5", + "E3B4E89FD3534E1ABAF69C65" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"C938F2AD73AA48500D4C96B76DA91E65BFC8604D553F5C0D665C5CD4BA792F5F", + "recipients":[ + { + "Context_hex":"840383F6584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E885238FB137F6C20764D89E26452937675B5F683F6F6F68219010044A101381B", + "Secret_hex":"017B26D9F28ADF910A8D0B7BDBC3A57682E2D267E4D14473AC38F4FDA6FF9B90CA6FB9D3A4BD4BC6235111D134223DAFB0B5399C4CD42D650ACDBDF0017D5F44F843" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'E3B4E89FD3534E1ABAF69C65'}, h'15BB9CAE6D06303AF8A3711DB08822C06113E87AB5B77304DBB6D7674E23344EA1C17E59', [[h'A101381B', {-2: {-1: 3, -2: h'00F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E01', -3: h'01031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65', -22: h'02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E885238FB137F6C20764D89E26452937675B5'}, h'']]])", + "cbor":"D8608443A10103A1054CE3B4E89FD3534E1ABAF69C65582415BB9CAE6D06303AF8A3711DB08822C06113E87AB5B77304DBB6D7674E23344EA1C17E59818344A101381BA321A4200321584200F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E0122584201031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6535584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E885238FB137F6C20764D89E26452937675B540" + } +} diff --git a/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-512-03.json b/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-512-03.json new file mode 100644 index 0000000..d50a0d8 --- /dev/null +++ b/src/test/resources/Examples/ecdh-direct-examples/p521-ss-hkdf-512-03.json @@ -0,0 +1,55 @@ +{ + "title":"p521-ss-hkdf-512-03: ECDH-SS direct w/ hkdf-sha-512 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-SS-512" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-521", + "x":"APP1tIC1Ey2__4aekg06nicpK3uvQELX7HPaZUXYf2qd-YCYZlR7L6RqW0CiGjNv9uyJ5srxdRb_St87pwbfZx4B", + "y":"AQMe7-xEu5s49sLiFXIGsY4FVgAxFe6HW1nT3sqOcqgkFs0_Y7fWpDkAGLc1Og3Qqmt7-8-7d0fTW1nNtf5RJqdM", + "d":"Af9IsRGlT6A-iPBgaSukjyB6A0LP6GTcw9wO-e71yUfMbb9YJMnjYFq1DBjjvxEyI35mjP-k115wW0q9LxYPvlRt" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852C2772BFB570B2D11D2CD3C5B6888AFEF" + ] + }, + "intermediates":{ + "CEK_hex":"DCDF153D16004B513D555A305855612B3D044F0AAF669273CAFA3D5228C0A12AE2667A263656826B631398958B18C1BA3660D6CDF153D60A088B3089A9AC822C", + "recipients":[ + { + "Context_hex":"840783F6584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852C2772BFB570B2D11D2CD3C5B6888AFEFF683F6F6F68219020044A101381B", + "Secret_hex":"017B26D9F28ADF910A8D0B7BDBC3A57682E2D267E4D14473AC38F4FDA6FF9B90CA6FB9D3A4BD4BC6235111D134223DAFB0B5399C4CD42D650ACDBDF0017D5F44F843" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'6BAC31E9B3D4F0D90CA64D9B217425E1453F8E353A5A1D7CB83B0DA18418AF701CF66F1605F7DD6125B70107D22B0125444F55E1F6FCD760DFF1851F06837C24', [[h'A101381B', {-2: {-1: 3, -2: h'00F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E01', -3: h'01031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65', -22: h'02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852C2772BFB570B2D11D2CD3C5B6888AFEF'}, h'']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E58406BAC31E9B3D4F0D90CA64D9B217425E1453F8E353A5A1D7CB83B0DA18418AF701CF66F1605F7DD6125B70107D22B0125444F55E1F6FCD760DFF1851F06837C24818344A101381BA321A4200321584200F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E0122584201031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6535584002D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852C2772BFB570B2D11D2CD3C5B6888AFEF40" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-128-01.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-128-01.json new file mode 100644 index 0000000..2e6e84e --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-128-01.json @@ -0,0 +1,55 @@ +{ + "title":"p256-ss-wrap-128-01: ECDH-SS direct w/ key wrap 128 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-SS-A128KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-256", + "x":"7cvYCcdU22WCwW1tZXR8iuzJLWGcd46xfxO1XJs-SPU", + "y":"DzhJXgz9RI6TseNmwEfLoNVns8UmvONsPzQDop2dKoo", + "d":"Uqr4fay_qYQykwcNCB2efj_NFaQRRQ-6fHZm763jt5w" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A", + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"B2353161740AACF1F7163647984B522A", + "recipients":[ + { + "Context_hex":"842283F6F6F683F6F6F682188044A101381F", + "Secret_hex":"8CA18423C89DB8842D5FD119F90E98650243AD77848BBBBE146FCFE2E802751D", + "KEK_hex":"3B78DA2BD96DECEB9D4572B101D6461B" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'64F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B', [[h'A101381F', {-2: {-1: 1, -2: h'EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F5', -3: h'0F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'33CB2D33A9C2A9178284E03D6DCCFFEA4E32D7363BDA50D3']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582464F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B818344A101381FA221A42001215820EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F52258200F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65581833CB2D33A9C2A9178284E03D6DCCFFEA4E32D7363BDA50D3" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-128-02.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-128-02.json new file mode 100644 index 0000000..c363076 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-128-02.json @@ -0,0 +1,55 @@ +{ + "title":"p256-ss-wrap-128-02: ECDH-SS direct w/ key wrap 128 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-SS-A128KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-256", + "x":"7cvYCcdU22WCwW1tZXR8iuzJLWGcd46xfxO1XJs-SPU", + "y":"DzhJXgz9RI6TseNmwEfLoNVns8UmvONsPzQDop2dKoo", + "d":"Uqr4fay_qYQykwcNCB2efj_NFaQRRQ-6fHZm763jt5w" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "recipients":[ + { + "Context_hex":"842283F6F6F683F6F6F682188044A101381F", + "Secret_hex":"8CA18423C89DB8842D5FD119F90E98650243AD77848BBBBE146FCFE2E802751D", + "KEK_hex":"3B78DA2BD96DECEB9D4572B101D6461B" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'02D1F7E6F26C43D4868D87CE'}, h'256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F', [[h'A101381F', {-2: {-1: 1, -2: h'EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F5', -3: h'0F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'FCE1BCC94823E72A5483565A7BDF21F4B374259E2C3A6E0B239D0E7E51B0AB05885D62EBB087C15D']]])", + "cbor":"D8608443A10103A1054C02D1F7E6F26C43D4868D87CE5824256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F818344A101381FA221A42001215820EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F52258200F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655828FCE1BCC94823E72A5483565A7BDF21F4B374259E2C3A6E0B239D0E7E51B0AB05885D62EBB087C15D" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-128-03.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-128-03.json new file mode 100644 index 0000000..b3b6734 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-128-03.json @@ -0,0 +1,55 @@ +{ + "title":"p256-ss-wrap-128-03: ECDH-SS direct w/ keywrap 128 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-SS-A128KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-256", + "x":"7cvYCcdU22WCwW1tZXR8iuzJLWGcd46xfxO1XJs-SPU", + "y":"DzhJXgz9RI6TseNmwEfLoNVns8UmvONsPzQDop2dKoo", + "d":"Uqr4fay_qYQykwcNCB2efj_NFaQRRQ-6fHZm763jt5w" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852ABCA4C9227ACD61EF964FD23C019452B" + ] + }, + "intermediates":{ + "CEK_hex":"02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852ABCA4C9227ACD61EF964FD23C019452B", + "recipients":[ + { + "Context_hex":"842283F6F6F683F6F6F682188044A101381F", + "Secret_hex":"8CA18423C89DB8842D5FD119F90E98650243AD77848BBBBE146FCFE2E802751D", + "KEK_hex":"3B78DA2BD96DECEB9D4572B101D6461B" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'29AE099F8876172256B7823347E3BC0DDB133835297292691884E3BFAD629586AC00D0A24DD44C508B5A92DF6FE711345CD7CBE87257C5D7D0DA03ADA33B2FA7', [[h'A101381F', {-2: {-1: 1, -2: h'EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F5', -3: h'0F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'1F0AE1AEC2E0E68D37FAAD6E9A5F46B22386D223611B20A4DA0BCA4E0AA033DDE80CC003B263CD150A0D70B7F9BFF668F153D2D23EA4421FED40974A206145E2AC6DABA29AFB6190']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E584029AE099F8876172256B7823347E3BC0DDB133835297292691884E3BFAD629586AC00D0A24DD44C508B5A92DF6FE711345CD7CBE87257C5D7D0DA03ADA33B2FA7818344A101381FA221A42001215820EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F52258200F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6558481F0AE1AEC2E0E68D37FAAD6E9A5F46B22386D223611B20A4DA0BCA4E0AA033DDE80CC003B263CD150A0D70B7F9BFF668F153D2D23EA4421FED40974A206145E2AC6DABA29AFB6190" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-192-01.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-192-01.json new file mode 100644 index 0000000..4264633 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-192-01.json @@ -0,0 +1,55 @@ +{ + "title":"p256-ss-wrap-128-01: ECDH-SS direct w/ key wrap 192 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-SS-A192KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-256", + "x":"7cvYCcdU22WCwW1tZXR8iuzJLWGcd46xfxO1XJs-SPU", + "y":"DzhJXgz9RI6TseNmwEfLoNVns8UmvONsPzQDop2dKoo", + "d":"Uqr4fay_qYQykwcNCB2efj_NFaQRRQ-6fHZm763jt5w" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A", + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"B2353161740AACF1F7163647984B522A", + "recipients":[ + { + "Context_hex":"842383F6F6F683F6F6F68218C044A1013820", + "Secret_hex":"8CA18423C89DB8842D5FD119F90E98650243AD77848BBBBE146FCFE2E802751D", + "KEK_hex":"99118A23090E360857A91B20A31A239EB89183D55535FD5F" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'64F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B', [[h'A1013820', {-2: {-1: 1, -2: h'EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F5', -3: h'0F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'FB271774C7AD02BCE547EE7170CE02A2E2BD493EEAEB5641']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582464F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B818344A1013820A221A42001215820EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F52258200F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655818FB271774C7AD02BCE547EE7170CE02A2E2BD493EEAEB5641" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-192-02.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-192-02.json new file mode 100644 index 0000000..8f12041 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-192-02.json @@ -0,0 +1,55 @@ +{ + "title":"p256-ss-wrap-128-02: ECDH-SS direct w/ key wrap 192 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-SS-A192KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-256", + "x":"7cvYCcdU22WCwW1tZXR8iuzJLWGcd46xfxO1XJs-SPU", + "y":"DzhJXgz9RI6TseNmwEfLoNVns8UmvONsPzQDop2dKoo", + "d":"Uqr4fay_qYQykwcNCB2efj_NFaQRRQ-6fHZm763jt5w" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "recipients":[ + { + "Context_hex":"842383F6F6F683F6F6F68218C044A1013820", + "Secret_hex":"8CA18423C89DB8842D5FD119F90E98650243AD77848BBBBE146FCFE2E802751D", + "KEK_hex":"99118A23090E360857A91B20A31A239EB89183D55535FD5F" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'02D1F7E6F26C43D4868D87CE'}, h'256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F', [[h'A1013820', {-2: {-1: 1, -2: h'EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F5', -3: h'0F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'93EC49A23215ABE7703F4EDCE6423AC9E850268107BE5E4C6D65D26087C44A37CCAC4CABEDD92446']]])", + "cbor":"D8608443A10103A1054C02D1F7E6F26C43D4868D87CE5824256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F818344A1013820A221A42001215820EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F52258200F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65582893EC49A23215ABE7703F4EDCE6423AC9E850268107BE5E4C6D65D26087C44A37CCAC4CABEDD92446" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-192-03.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-192-03.json new file mode 100644 index 0000000..547ba31 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-192-03.json @@ -0,0 +1,55 @@ +{ + "title":"p256-ss-wrap-128-03: ECDH-SS direct w/ keywrap 192 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-SS-A192KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-256", + "x":"7cvYCcdU22WCwW1tZXR8iuzJLWGcd46xfxO1XJs-SPU", + "y":"DzhJXgz9RI6TseNmwEfLoNVns8UmvONsPzQDop2dKoo", + "d":"Uqr4fay_qYQykwcNCB2efj_NFaQRRQ-6fHZm763jt5w" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852ABCA4C9227ACD61EF964FD23C019452B" + ] + }, + "intermediates":{ + "CEK_hex":"02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852ABCA4C9227ACD61EF964FD23C019452B", + "recipients":[ + { + "Context_hex":"842383F6F6F683F6F6F68218C044A1013820", + "Secret_hex":"8CA18423C89DB8842D5FD119F90E98650243AD77848BBBBE146FCFE2E802751D", + "KEK_hex":"99118A23090E360857A91B20A31A239EB89183D55535FD5F" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'29AE099F8876172256B7823347E3BC0DDB133835297292691884E3BFAD629586AC00D0A24DD44C508B5A92DF6FE711345CD7CBE87257C5D7D0DA03ADA33B2FA7', [[h'A1013820', {-2: {-1: 1, -2: h'EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F5', -3: h'0F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'494F559386FC0EBBE744163D4C796015AE7BC4BC3758F59318843DFDF77675D1B0B69534F9201B38FCFBCD6F87C1D581043F417BA17EE13CA88BCED26F94870CDB06693FD234727F']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E584029AE099F8876172256B7823347E3BC0DDB133835297292691884E3BFAD629586AC00D0A24DD44C508B5A92DF6FE711345CD7CBE87257C5D7D0DA03ADA33B2FA7818344A1013820A221A42001215820EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F52258200F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655848494F559386FC0EBBE744163D4C796015AE7BC4BC3758F59318843DFDF77675D1B0B69534F9201B38FCFBCD6F87C1D581043F417BA17EE13CA88BCED26F94870CDB06693FD234727F" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-256-01.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-256-01.json new file mode 100644 index 0000000..ca503cc --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-256-01.json @@ -0,0 +1,55 @@ +{ + "title":"p256-ss-wrap-256-01: ECDH-SS direct w/ aes wrap 256 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-SS-A256KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-256", + "x":"7cvYCcdU22WCwW1tZXR8iuzJLWGcd46xfxO1XJs-SPU", + "y":"DzhJXgz9RI6TseNmwEfLoNVns8UmvONsPzQDop2dKoo", + "d":"Uqr4fay_qYQykwcNCB2efj_NFaQRRQ-6fHZm763jt5w" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A", + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"B2353161740AACF1F7163647984B522A", + "recipients":[ + { + "Context_hex":"842483F6F6F683F6F6F68219010044A1013821", + "Secret_hex":"8CA18423C89DB8842D5FD119F90E98650243AD77848BBBBE146FCFE2E802751D", + "KEK_hex":"7EACAA8F388AA56382E0CAB617F1636B9EAC857DEDC5123DD26781BD7BA0F5A4" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'64F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B', [[h'A1013821', {-2: {-1: 1, -2: h'EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F5', -3: h'0F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'008C801E1FC95BE6DD8B3AF3C5B7226470AF28549060B598']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582464F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B818344A1013821A221A42001215820EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F52258200F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655818008C801E1FC95BE6DD8B3AF3C5B7226470AF28549060B598" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-256-02.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-256-02.json new file mode 100644 index 0000000..539be44 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-256-02.json @@ -0,0 +1,55 @@ +{ + "title":"p256-ss-wrap-256-02: ECDH-SS direct w/ wrap 256 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-SS-A256KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-256", + "x":"7cvYCcdU22WCwW1tZXR8iuzJLWGcd46xfxO1XJs-SPU", + "y":"DzhJXgz9RI6TseNmwEfLoNVns8UmvONsPzQDop2dKoo", + "d":"Uqr4fay_qYQykwcNCB2efj_NFaQRRQ-6fHZm763jt5w" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "recipients":[ + { + "Context_hex":"842483F6F6F683F6F6F68219010044A1013821", + "Secret_hex":"8CA18423C89DB8842D5FD119F90E98650243AD77848BBBBE146FCFE2E802751D", + "KEK_hex":"7EACAA8F388AA56382E0CAB617F1636B9EAC857DEDC5123DD26781BD7BA0F5A4" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'02D1F7E6F26C43D4868D87CE'}, h'256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F', [[h'A1013821', {-2: {-1: 1, -2: h'EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F5', -3: h'0F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'352126297E8D63A0E8FCD16B891ED3CAF970C18F3F7028C31C4A16BB6494FFBF8B0E7DBD7C787734']]])", + "cbor":"D8608443A10103A1054C02D1F7E6F26C43D4868D87CE5824256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F818344A1013821A221A42001215820EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F52258200F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655828352126297E8D63A0E8FCD16B891ED3CAF970C18F3F7028C31C4A16BB6494FFBF8B0E7DBD7C787734" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-256-03.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-256-03.json new file mode 100644 index 0000000..943da26 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-ss-wrap-256-03.json @@ -0,0 +1,55 @@ +{ + "title":"p256-ss-wrap-256-03: ECDH-SS direct w/ aes-wrap 256 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-SS-A256KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-256", + "x":"7cvYCcdU22WCwW1tZXR8iuzJLWGcd46xfxO1XJs-SPU", + "y":"DzhJXgz9RI6TseNmwEfLoNVns8UmvONsPzQDop2dKoo", + "d":"Uqr4fay_qYQykwcNCB2efj_NFaQRRQ-6fHZm763jt5w" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852AE66183B507368707ACC0A825C900826" + ] + }, + "intermediates":{ + "CEK_hex":"02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852AE66183B507368707ACC0A825C900826", + "recipients":[ + { + "Context_hex":"842483F6F6F683F6F6F68219010044A1013821", + "Secret_hex":"8CA18423C89DB8842D5FD119F90E98650243AD77848BBBBE146FCFE2E802751D", + "KEK_hex":"7EACAA8F388AA56382E0CAB617F1636B9EAC857DEDC5123DD26781BD7BA0F5A4" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'7A70B85528A44069F6523B52A05E655557D6E2A403580C6A63A5585183454F3105473981DF08A309D6C5CCAD79578669B00999E25AD463F16D2DC06ADA13C17D', [[h'A1013821', {-2: {-1: 1, -2: h'EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F5', -3: h'0F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'29F5E6ADA6636959721550B3F509BFE4AC32AE4B694A95E0BAAE77EDC7981FBF4D2189C5B99F1E3962E56E07EEB63905D80B346306B2B42881DAF4CE7BC9A3A8D012E21B2600F38A']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E58407A70B85528A44069F6523B52A05E655557D6E2A403580C6A63A5585183454F3105473981DF08A309D6C5CCAD79578669B00999E25AD463F16D2DC06ADA13C17D818344A1013821A221A42001215820EDCBD809C754DB6582C16D6D65747C8AECC92D619C778EB17F13B55C9B3E48F52258200F38495E0CFD448E93B1E366C047CBA0D567B3C526BCE36C3F3403A29D9D2A8A01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65584829F5E6ADA6636959721550B3F509BFE4AC32AE4B694A95E0BAAE77EDC7981FBF4D2189C5B99F1E3962E56E07EEB63905D80B346306B2B42881DAF4CE7BC9A3A8D012E21B2600F38A" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-128-01.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-128-01.json new file mode 100644 index 0000000..ea535cd --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-128-01.json @@ -0,0 +1,55 @@ +{ + "title":"p256-wrap-128-01: ECDH-ES direct w/ key wrap 128 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES-A128KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example", + "epk":{ + "kty":"EC", + "crv":"P-256", + "x":"mPUKT_bAWGHIhg0TpjjqVsP1rXWQu_vwVOHHtNkdYoA", + "y":"8BQAsImGeAS46fyWw5MhYfGTT0IjBpFw2SS34Dv4Irs" + } + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A", + "02D1F7E6F26C43D4868D87CE", + "848DF1C3C9CF4DF2FE6C632BF7886413F76E885255273703EE32E5A427A34F7B" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"B2353161740AACF1F7163647984B522A", + "recipients":[ + { + "Context_hex":"842283F6F6F683F6F6F682188044A101381C", + "Secret_hex":"EE45F7C389FDB89923CA67C0E0CD29802DEC8F514EB818054BEEDD5DAFA78048", + "KEK_hex":"7C60CB35A78B24DCF40A394395E9E8CD" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'64F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B', [[h'A101381C', {-1: {1: 2, -1: 1, -2: h'ECDBCEC636CC1408A503BBF6B7311B900C9AED9C5B71503848C89A07D0EF6F5B', -3: h'D6D1586710C02203E4E53B20DC7B233CA4C8B6853467B9FB8244A3840ACCD602'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'D23BCA11C3F8E35BF6F81412794E159772E946FF4FB31BD1']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582464F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B818344A101381CA220A401022001215820ECDBCEC636CC1408A503BBF6B7311B900C9AED9C5B71503848C89A07D0EF6F5B225820D6D1586710C02203E4E53B20DC7B233CA4C8B6853467B9FB8244A3840ACCD6020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655818D23BCA11C3F8E35BF6F81412794E159772E946FF4FB31BD1" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-128-02.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-128-02.json new file mode 100644 index 0000000..0e647af --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-128-02.json @@ -0,0 +1,55 @@ +{ + "title":"p256-wrap-128-02: ECDH-ES direct w/ key wrap 128 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES-A128KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example", + "epk":{ + "kty":"EC", + "crv":"P-256", + "x":"mPUKT_bAWGHIhg0TpjjqVsP1rXWQu_vwVOHHtNkdYoA", + "y":"8BQAsImGeAS46fyWw5MhYfGTT0IjBpFw2SS34Dv4Irs" + } + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "02D1F7E6F26C43D4868D87CE", + "F76E885204AD6271793AF0514E08180849BF20DFFA649BB0E506442C0CAD1077" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "recipients":[ + { + "Context_hex":"842283F6F6F683F6F6F682188044A101381C", + "Secret_hex":"24A488D1D8A150C662220797FECD6F75F51BE7E74BBF5DA79325CA828EDCF715", + "KEK_hex":"BF155806F6E2C602CE0999B31079B07E" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'02D1F7E6F26C43D4868D87CE'}, h'256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F', [[h'A101381C', {-1: {1: 2, -1: 1, -2: h'E12C938B182258C9D447D41821715261AE99AD77D241943F4A12FF20DD3CE400', -3: h'48B0588903365733B98D388C6136C04B7FFD1A770CD2611189EE84E9941A7E26'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'508FAD30A1A95D1380B5167D032799C72477AB60258ABFB71C7AB603A4890EF44F1363ED9F569E85']]])", + "cbor":"D8608443A10103A1054C02D1F7E6F26C43D4868D87CE5824256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F818344A101381CA220A401022001215820E12C938B182258C9D447D41821715261AE99AD77D241943F4A12FF20DD3CE40022582048B0588903365733B98D388C6136C04B7FFD1A770CD2611189EE84E9941A7E260458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655828508FAD30A1A95D1380B5167D032799C72477AB60258ABFB71C7AB603A4890EF44F1363ED9F569E85" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-128-03.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-128-03.json new file mode 100644 index 0000000..373ed7b --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-128-03.json @@ -0,0 +1,55 @@ +{ + "title":"p256-wrap-128-03: ECDH-ES direct w/ keywrap 128 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES-A128KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example", + "epk":{ + "kty":"EC", + "crv":"P-256", + "x":"mPUKT_bAWGHIhg0TpjjqVsP1rXWQu_vwVOHHtNkdYoA", + "y":"8BQAsImGeAS46fyWw5MhYfGTT0IjBpFw2SS34Dv4Irs" + } + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852ABCA4C9227ACD61EF964FD23C019452B", + "CB9262857873CC8F75DAC024720B6E32450B8EE6EC23EE372F8A114BAD37557A" + ] + }, + "intermediates":{ + "CEK_hex":"02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852ABCA4C9227ACD61EF964FD23C019452B", + "recipients":[ + { + "Context_hex":"842283F6F6F683F6F6F682188044A101381C", + "Secret_hex":"101EC314A3C49622CC8AE4A8A50015FECE2B34B89FEF95D8D50DB66354A9FCB5", + "KEK_hex":"1E750208DCCB422CDB7654C9E9337BD1" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'29AE099F8876172256B7823347E3BC0DDB133835297292691884E3BFAD629586AC00D0A24DD44C508B5A92DF6FE711345CD7CBE87257C5D7D0DA03ADA33B2FA7', [[h'A101381C', {-1: {1: 2, -1: 1, -2: h'E4CFD3201DE9D3A56315FA0AF77105331EF03666C85A5F4BB67C309CB3386067', -3: h'A5EE5A8670A96163092B992BD17CAD47866AD8579C4B2676C3B5BB7E01ADD756'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'836026593749A7C92049501148814F87FC396856E74739D6B39C99154E690E7FA1BEB86B5669722467EF083E8EF68D09DC674B0D94294597C27DD5016C937DD4056F7B85BE144926']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E584029AE099F8876172256B7823347E3BC0DDB133835297292691884E3BFAD629586AC00D0A24DD44C508B5A92DF6FE711345CD7CBE87257C5D7D0DA03ADA33B2FA7818344A101381CA220A401022001215820E4CFD3201DE9D3A56315FA0AF77105331EF03666C85A5F4BB67C309CB3386067225820A5EE5A8670A96163092B992BD17CAD47866AD8579C4B2676C3B5BB7E01ADD7560458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655848836026593749A7C92049501148814F87FC396856E74739D6B39C99154E690E7FA1BEB86B5669722467EF083E8EF68D09DC674B0D94294597C27DD5016C937DD4056F7B85BE144926" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-192-01.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-192-01.json new file mode 100644 index 0000000..2a7cba9 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-192-01.json @@ -0,0 +1,55 @@ +{ + "title":"p256-wrap-128-01: ECDH-ES direct w/ key wrap 192 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES-A192KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example", + "epk":{ + "kty":"EC", + "crv":"P-256", + "x":"mPUKT_bAWGHIhg0TpjjqVsP1rXWQu_vwVOHHtNkdYoA", + "y":"8BQAsImGeAS46fyWw5MhYfGTT0IjBpFw2SS34Dv4Irs" + } + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A", + "02D1F7E6F26C43D4868D87CE", + "848DF1C3C9CF4DF2FE6C632BF7886413F76E885255273703EE32E5A427A34F7B" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"B2353161740AACF1F7163647984B522A", + "recipients":[ + { + "Context_hex":"842383F6F6F683F6F6F68218C044A101381D", + "Secret_hex":"EE45F7C389FDB89923CA67C0E0CD29802DEC8F514EB818054BEEDD5DAFA78048", + "KEK_hex":"891EA85B1C85FAF66B3FC9CC3D149F476A63CC59746E637B" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'64F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B', [[h'A101381D', {-1: {1: 2, -1: 1, -2: h'ECDBCEC636CC1408A503BBF6B7311B900C9AED9C5B71503848C89A07D0EF6F5B', -3: h'D6D1586710C02203E4E53B20DC7B233CA4C8B6853467B9FB8244A3840ACCD602'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'9A425F9CEE4175EE2966C1FE2462CF0C8E802D3E0FCA3006']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582464F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B818344A101381DA220A401022001215820ECDBCEC636CC1408A503BBF6B7311B900C9AED9C5B71503848C89A07D0EF6F5B225820D6D1586710C02203E4E53B20DC7B233CA4C8B6853467B9FB8244A3840ACCD6020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6558189A425F9CEE4175EE2966C1FE2462CF0C8E802D3E0FCA3006" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-192-02.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-192-02.json new file mode 100644 index 0000000..b2830c9 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-192-02.json @@ -0,0 +1,55 @@ +{ + "title":"p256-wrap-128-02: ECDH-ES direct w/ key wrap 192 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES-A192KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example", + "epk":{ + "kty":"EC", + "crv":"P-256", + "x":"mPUKT_bAWGHIhg0TpjjqVsP1rXWQu_vwVOHHtNkdYoA", + "y":"8BQAsImGeAS46fyWw5MhYfGTT0IjBpFw2SS34Dv4Irs" + } + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "02D1F7E6F26C43D4868D87CE", + "F76E885204AD6271793AF0514E08180849BF20DFFA649BB0E506442C0CAD1077" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "recipients":[ + { + "Context_hex":"842383F6F6F683F6F6F68218C044A101381D", + "Secret_hex":"24A488D1D8A150C662220797FECD6F75F51BE7E74BBF5DA79325CA828EDCF715", + "KEK_hex":"31E019F3828755F8099361216AD9DAE09C465B677E847C80" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'02D1F7E6F26C43D4868D87CE'}, h'256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F', [[h'A101381D', {-1: {1: 2, -1: 1, -2: h'E12C938B182258C9D447D41821715261AE99AD77D241943F4A12FF20DD3CE400', -3: h'48B0588903365733B98D388C6136C04B7FFD1A770CD2611189EE84E9941A7E26'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'A82C516F35C1858EEC49DC339568E674F51921DD5F254E12404B4CFBE7D33AA96C5A4AF0906026FF']]])", + "cbor":"D8608443A10103A1054C02D1F7E6F26C43D4868D87CE5824256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F818344A101381DA220A401022001215820E12C938B182258C9D447D41821715261AE99AD77D241943F4A12FF20DD3CE40022582048B0588903365733B98D388C6136C04B7FFD1A770CD2611189EE84E9941A7E260458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655828A82C516F35C1858EEC49DC339568E674F51921DD5F254E12404B4CFBE7D33AA96C5A4AF0906026FF" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-192-03.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-192-03.json new file mode 100644 index 0000000..366479b --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-192-03.json @@ -0,0 +1,55 @@ +{ + "title":"p256-wrap-128-03: ECDH-ES direct w/ keywrap 192 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES-A192KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example", + "epk":{ + "kty":"EC", + "crv":"P-256", + "x":"mPUKT_bAWGHIhg0TpjjqVsP1rXWQu_vwVOHHtNkdYoA", + "y":"8BQAsImGeAS46fyWw5MhYfGTT0IjBpFw2SS34Dv4Irs" + } + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852ABCA4C9227ACD61EF964FD23C019452B", + "CB9262857873CC8F75DAC024720B6E32450B8EE6EC23EE372F8A114BAD37557A" + ] + }, + "intermediates":{ + "CEK_hex":"02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852ABCA4C9227ACD61EF964FD23C019452B", + "recipients":[ + { + "Context_hex":"842383F6F6F683F6F6F68218C044A101381D", + "Secret_hex":"101EC314A3C49622CC8AE4A8A50015FECE2B34B89FEF95D8D50DB66354A9FCB5", + "KEK_hex":"3CCBD32E9B4E7BE0DC3B54C4DE00B940A7C3BA18DC345E4E" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'29AE099F8876172256B7823347E3BC0DDB133835297292691884E3BFAD629586AC00D0A24DD44C508B5A92DF6FE711345CD7CBE87257C5D7D0DA03ADA33B2FA7', [[h'A101381D', {-1: {1: 2, -1: 1, -2: h'E4CFD3201DE9D3A56315FA0AF77105331EF03666C85A5F4BB67C309CB3386067', -3: h'A5EE5A8670A96163092B992BD17CAD47866AD8579C4B2676C3B5BB7E01ADD756'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'95FF88D324E49ABAAB4DAA873EDD13DD5AA2225E0C0739A7813753E87C216D9610AACE2BB8A49DD3C3279B38334F4435E7C529BB53B44E5D88ADDD0D515B0369B8FFD9C70088D394']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E584029AE099F8876172256B7823347E3BC0DDB133835297292691884E3BFAD629586AC00D0A24DD44C508B5A92DF6FE711345CD7CBE87257C5D7D0DA03ADA33B2FA7818344A101381DA220A401022001215820E4CFD3201DE9D3A56315FA0AF77105331EF03666C85A5F4BB67C309CB3386067225820A5EE5A8670A96163092B992BD17CAD47866AD8579C4B2676C3B5BB7E01ADD7560458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65584895FF88D324E49ABAAB4DAA873EDD13DD5AA2225E0C0739A7813753E87C216D9610AACE2BB8A49DD3C3279B38334F4435E7C529BB53B44E5D88ADDD0D515B0369B8FFD9C70088D394" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-256-01.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-256-01.json new file mode 100644 index 0000000..f8ece87 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-256-01.json @@ -0,0 +1,55 @@ +{ + "title":"p256-wrap-256-01: ECDH-ES direct w/ aes wrap 256 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES-A256KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example", + "epk":{ + "kty":"EC", + "crv":"P-256", + "x":"mPUKT_bAWGHIhg0TpjjqVsP1rXWQu_vwVOHHtNkdYoA", + "y":"8BQAsImGeAS46fyWw5MhYfGTT0IjBpFw2SS34Dv4Irs" + } + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A", + "02D1F7E6F26C43D4868D87CE", + "848DF1C3C9CF4DF2FE6C632BF7886413F76E885271BD8DC2D289F4559A52462A" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"B2353161740AACF1F7163647984B522A", + "recipients":[ + { + "Context_hex":"842483F6F6F683F6F6F68219010044A101381E", + "Secret_hex":"8BED545F07A7F39BD7179403C94E7D9862D0A5630217C289B8B4D953490D6D9E", + "KEK_hex":"185E6208B1E0ABEE41FCD0890318FFE5320B5FB2D66B4976F7A51A9493E5B502" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'64F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B', [[h'A101381E', {-1: {1: 2, -1: 1, -2: h'3FC1141F492FDB3B33122BE61B31BAFD860798DB190E07831FB7A2E42713F4CA', -3: h'FC09D3DEF88EA52953B51F48955BFAC1AC79B4286F0673519A4A71FC18B62869'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'E00E25B58AEADDE5A475F1D69D2A2C199E5C1F231C5B164A']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582464F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B818344A101381EA220A4010220012158203FC1141F492FDB3B33122BE61B31BAFD860798DB190E07831FB7A2E42713F4CA225820FC09D3DEF88EA52953B51F48955BFAC1AC79B4286F0673519A4A71FC18B628690458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655818E00E25B58AEADDE5A475F1D69D2A2C199E5C1F231C5B164A" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-256-02.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-256-02.json new file mode 100644 index 0000000..4da6290 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-256-02.json @@ -0,0 +1,55 @@ +{ + "title":"p256-wrap-256-02: ECDH-ES direct w/ wrap 256 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES-A256KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example", + "epk":{ + "kty":"EC", + "crv":"P-256", + "x":"mPUKT_bAWGHIhg0TpjjqVsP1rXWQu_vwVOHHtNkdYoA", + "y":"8BQAsImGeAS46fyWw5MhYfGTT0IjBpFw2SS34Dv4Irs" + } + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "02D1F7E6F26C43D4868D87CE", + "F76E88525495A78CC7BD0D413C4AD5E2E3602BAB795B6B40F00C872B3B90308C" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "recipients":[ + { + "Context_hex":"842483F6F6F683F6F6F68219010044A101381E", + "Secret_hex":"F96CE131792F76977FF6F437EE823EF344CA00CB0A72FCFFD90C7AFB50C1AA7D", + "KEK_hex":"9252EFA4A271F4FC41EAE57ECCFF748E8C83A6264FF519C782233EF895712291" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'02D1F7E6F26C43D4868D87CE'}, h'256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F', [[h'A101381E', {-1: {1: 2, -1: 1, -2: h'687312AA4E2112CB2A06721F984788D3D1E235F64F48CEBBC81CB19E11D3F8E1', -3: h'C31C514CCB8AF91800DD519ADA41CF6B03ECDFB212FDB34D371D536C7419ACC4'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'9F7FF60D7189124425A470E48FF66A00B6E3D013B07C2428F2C29ECB6E605DBBADC3EA91AB671E59']]])", + "cbor":"D8608443A10103A1054C02D1F7E6F26C43D4868D87CE5824256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F818344A101381EA220A401022001215820687312AA4E2112CB2A06721F984788D3D1E235F64F48CEBBC81CB19E11D3F8E1225820C31C514CCB8AF91800DD519ADA41CF6B03ECDFB212FDB34D371D536C7419ACC40458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6558289F7FF60D7189124425A470E48FF66A00B6E3D013B07C2428F2C29ECB6E605DBBADC3EA91AB671E59" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-256-03.json b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-256-03.json new file mode 100644 index 0000000..b74ba61 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p256-wrap-256-03.json @@ -0,0 +1,55 @@ +{ + "title":"p256-wrap-256-03: ECDH-ES direct w/ aes-wrap 256 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"meriadoc.brandybuck@buckland.example", + "crv":"P-256", + "x":"Ze2loSV3wrroKUN_4zhwGhCqo3Xhu1td4QjeQ5wIVR0", + "y":"HlLtdXARY_f55A3fnzQbPcm6hgr34Mp8p-nuzQCE0Zw", + "d":"r_kHyZ-a06rmxM3yESK84r1otSg-aQcVStkRhA-iCM8" + }, + "protected":{ + "alg":"ECDH-ES-A256KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example", + "epk":{ + "kty":"EC", + "crv":"P-256", + "x":"mPUKT_bAWGHIhg0TpjjqVsP1rXWQu_vwVOHHtNkdYoA", + "y":"8BQAsImGeAS46fyWw5MhYfGTT0IjBpFw2SS34Dv4Irs" + } + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852AE66183B507368707ACC0A825C900826", + "AB446CBBDB9D1BF1A4532EC5EA347D152A3BA27958A7A9199EDF9AE0702F664E" + ] + }, + "intermediates":{ + "CEK_hex":"02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852AE66183B507368707ACC0A825C900826", + "recipients":[ + { + "Context_hex":"842483F6F6F683F6F6F68219010044A101381E", + "Secret_hex":"48F812EE63342F7E6F36E90839FE2DF3E687E27690613C0E1511D77E99F4F0EF", + "KEK_hex":"C59A08AEFA2CF6BD0EB6D6AA9250AE7ADE1A207009D9534A62B1499B93C47449" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'7A70B85528A44069F6523B52A05E655557D6E2A403580C6A63A5585183454F3105473981DF08A309D6C5CCAD79578669B00999E25AD463F16D2DC06ADA13C17D', [[h'A101381E', {-1: {1: 2, -1: 1, -2: h'30687714315D2F77217589A529DC9704D736636EE541064C896FDA61E4237719', -3: h'2707A4E0B91EED9A57A2B0E5FCD18FACBA0BF879E8415D1762A1B8E75624C461'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'92113A046864D7BABBD98A157E73B5E873198BD1BE51CE2E6FDFAD285F6C8AD95BDA73AEFD7D1EED01A767F76CFC809B623B0E6F0C373F6274360241E85B3139AF1112827E936F35']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E58407A70B85528A44069F6523B52A05E655557D6E2A403580C6A63A5585183454F3105473981DF08A309D6C5CCAD79578669B00999E25AD463F16D2DC06ADA13C17D818344A101381EA220A40102200121582030687714315D2F77217589A529DC9704D736636EE541064C896FDA61E42377192258202707A4E0B91EED9A57A2B0E5FCD18FACBA0BF879E8415D1762A1B8E75624C4610458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65584892113A046864D7BABBD98A157E73B5E873198BD1BE51CE2E6FDFAD285F6C8AD95BDA73AEFD7D1EED01A767F76CFC809B623B0E6F0C373F6274360241E85B3139AF1112827E936F35" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-128-01.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-128-01.json new file mode 100644 index 0000000..11c8c34 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-128-01.json @@ -0,0 +1,56 @@ +{ + "title":"p521-ss-wrap-128-01: ECDH-SS direct w/ key wrap 128 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-SS-A128KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-521", + "x":"APP1tIC1Ey2__4aekg06nicpK3uvQELX7HPaZUXYf2qd-YCYZlR7L6RqW0CiGjNv9uyJ5srxdRb_St87pwbfZx4B", + "y":"AQMe7-xEu5s49sLiFXIGsY4FVgAxFe6HW1nT3sqOcqgkFs0_Y7fWpDkAGLc1Og3Qqmt7-8-7d0fTW1nNtf5RJqdM", + "d":"Af9IsRGlT6A-iPBgaSukjyB6A0LP6GTcw9wO-e71yUfMbb9YJMnjYFq1DBjjvxEyI35mjP-k115wW0q9LxYPvlRt" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A", + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"B2353161740AACF1F7163647984B522A", + "recipients":[ + { + "Context_hex":"842283F6F6F683F6F6F682188044A101381F", + "Secret_hex":"017B26D9F28ADF910A8D0B7BDBC3A57682E2D267E4D14473AC38F4FDA6FF9B90CA6FB9D3A4BD4BC6235111D134223DAFB0B5399C4CD42D650ACDBDF0017D5F44F843", + "KEK_hex":"8396EE5A6251A7312191C27E11A2A005" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'64F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B', [[h'A101381F', {-2: {-1: 3, -2: h'00F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E01', -3: h'01031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'4C72A80A4657F722C39983AB695555C65F3050E786EB5CB2']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582464F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B818344A101381FA221A4200321584200F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E0122584201031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6558184C72A80A4657F722C39983AB695555C65F3050E786EB5CB2" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-128-02.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-128-02.json new file mode 100644 index 0000000..74d53a0 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-128-02.json @@ -0,0 +1,56 @@ +{ + "title":"p521-ss-wrap-128-02: ECDH-SS direct w/ key wrap 128 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-SS-A128KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-521", + "x":"APP1tIC1Ey2__4aekg06nicpK3uvQELX7HPaZUXYf2qd-YCYZlR7L6RqW0CiGjNv9uyJ5srxdRb_St87pwbfZx4B", + "y":"AQMe7-xEu5s49sLiFXIGsY4FVgAxFe6HW1nT3sqOcqgkFs0_Y7fWpDkAGLc1Og3Qqmt7-8-7d0fTW1nNtf5RJqdM", + "d":"Af9IsRGlT6A-iPBgaSukjyB6A0LP6GTcw9wO-e71yUfMbb9YJMnjYFq1DBjjvxEyI35mjP-k115wW0q9LxYPvlRt" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "recipients":[ + { + "Context_hex":"842283F6F6F683F6F6F682188044A101381F", + "Secret_hex":"017B26D9F28ADF910A8D0B7BDBC3A57682E2D267E4D14473AC38F4FDA6FF9B90CA6FB9D3A4BD4BC6235111D134223DAFB0B5399C4CD42D650ACDBDF0017D5F44F843", + "KEK_hex":"8396EE5A6251A7312191C27E11A2A005" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'02D1F7E6F26C43D4868D87CE'}, h'256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F', [[h'A101381F', {-2: {-1: 3, -2: h'00F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E01', -3: h'01031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'30828DEAF978B83AFEB4F4AA4A1D4624F9395FB80253E95E4F9E11CA1D820E1AE0DF9DB0A7B48A6D']]])", + "cbor":"D8608443A10103A1054C02D1F7E6F26C43D4868D87CE5824256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F818344A101381FA221A4200321584200F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E0122584201031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65582830828DEAF978B83AFEB4F4AA4A1D4624F9395FB80253E95E4F9E11CA1D820E1AE0DF9DB0A7B48A6D" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-128-03.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-128-03.json new file mode 100644 index 0000000..9076464 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-128-03.json @@ -0,0 +1,56 @@ +{ + "title":"p521-ss-wrap-128-03: ECDH-SS direct w/ AES-128 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-SS-A128KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-521", + "x":"APP1tIC1Ey2__4aekg06nicpK3uvQELX7HPaZUXYf2qd-YCYZlR7L6RqW0CiGjNv9uyJ5srxdRb_St87pwbfZx4B", + "y":"AQMe7-xEu5s49sLiFXIGsY4FVgAxFe6HW1nT3sqOcqgkFs0_Y7fWpDkAGLc1Og3Qqmt7-8-7d0fTW1nNtf5RJqdM", + "d":"Af9IsRGlT6A-iPBgaSukjyB6A0LP6GTcw9wO-e71yUfMbb9YJMnjYFq1DBjjvxEyI35mjP-k115wW0q9LxYPvlRt" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852C2772BFB570B2D11D2CD3C5B6888AFEF" + ] + }, + "intermediates":{ + "CEK_hex":"02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852C2772BFB570B2D11D2CD3C5B6888AFEF", + "recipients":[ + { + "Context_hex":"842283F6F6F683F6F6F682188044A101381F", + "Secret_hex":"017B26D9F28ADF910A8D0B7BDBC3A57682E2D267E4D14473AC38F4FDA6FF9B90CA6FB9D3A4BD4BC6235111D134223DAFB0B5399C4CD42D650ACDBDF0017D5F44F843", + "KEK_hex":"8396EE5A6251A7312191C27E11A2A005" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'D666AE264277E9B4345AFBCD83317AED530C46C7E43D52671C13EEB92415249035A9A01A397A11A60EBD212402468EE4403F388D1E5D878B35BD2B0292B90883', [[h'A101381F', {-2: {-1: 3, -2: h'00F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E01', -3: h'01031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'CB164F65F37023E6C940230160762002593D6F42CF4A4D61CDE14AC2A5F41A7A88D77B257A1887518C1BF9ED3038B7C049D874DDABE1CB287204D59B14C88D54B9A00BF078505934']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E5840D666AE264277E9B4345AFBCD83317AED530C46C7E43D52671C13EEB92415249035A9A01A397A11A60EBD212402468EE4403F388D1E5D878B35BD2B0292B90883818344A101381FA221A4200321584200F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E0122584201031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655848CB164F65F37023E6C940230160762002593D6F42CF4A4D61CDE14AC2A5F41A7A88D77B257A1887518C1BF9ED3038B7C049D874DDABE1CB287204D59B14C88D54B9A00BF078505934" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-192-01.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-192-01.json new file mode 100644 index 0000000..7c655eb --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-192-01.json @@ -0,0 +1,56 @@ +{ + "title":"p521-ss-wrap-128-01: ECDH-SS direct w/ key wrap 192 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-SS-A192KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-521", + "x":"APP1tIC1Ey2__4aekg06nicpK3uvQELX7HPaZUXYf2qd-YCYZlR7L6RqW0CiGjNv9uyJ5srxdRb_St87pwbfZx4B", + "y":"AQMe7-xEu5s49sLiFXIGsY4FVgAxFe6HW1nT3sqOcqgkFs0_Y7fWpDkAGLc1Og3Qqmt7-8-7d0fTW1nNtf5RJqdM", + "d":"Af9IsRGlT6A-iPBgaSukjyB6A0LP6GTcw9wO-e71yUfMbb9YJMnjYFq1DBjjvxEyI35mjP-k115wW0q9LxYPvlRt" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A", + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"B2353161740AACF1F7163647984B522A", + "recipients":[ + { + "Context_hex":"842383F6F6F683F6F6F68218C044A1013820", + "Secret_hex":"017B26D9F28ADF910A8D0B7BDBC3A57682E2D267E4D14473AC38F4FDA6FF9B90CA6FB9D3A4BD4BC6235111D134223DAFB0B5399C4CD42D650ACDBDF0017D5F44F843", + "KEK_hex":"7D86EDC41521B847AD5F2F77E71761F239CC33CB7126A0B1" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'64F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B', [[h'A1013820', {-2: {-1: 3, -2: h'00F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E01', -3: h'01031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'E196B00055198859B29FEDCBA6A81E5DAFB6A36AC2E3CB6E']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582464F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B818344A1013820A221A4200321584200F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E0122584201031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655818E196B00055198859B29FEDCBA6A81E5DAFB6A36AC2E3CB6E" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-192-02.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-192-02.json new file mode 100644 index 0000000..caf78fc --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-192-02.json @@ -0,0 +1,56 @@ +{ + "title":"p521-ss-wrap-128-02: ECDH-SS direct w/ key wrap 192 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-SS-A192KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-521", + "x":"APP1tIC1Ey2__4aekg06nicpK3uvQELX7HPaZUXYf2qd-YCYZlR7L6RqW0CiGjNv9uyJ5srxdRb_St87pwbfZx4B", + "y":"AQMe7-xEu5s49sLiFXIGsY4FVgAxFe6HW1nT3sqOcqgkFs0_Y7fWpDkAGLc1Og3Qqmt7-8-7d0fTW1nNtf5RJqdM", + "d":"Af9IsRGlT6A-iPBgaSukjyB6A0LP6GTcw9wO-e71yUfMbb9YJMnjYFq1DBjjvxEyI35mjP-k115wW0q9LxYPvlRt" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "recipients":[ + { + "Context_hex":"842383F6F6F683F6F6F68218C044A1013820", + "Secret_hex":"017B26D9F28ADF910A8D0B7BDBC3A57682E2D267E4D14473AC38F4FDA6FF9B90CA6FB9D3A4BD4BC6235111D134223DAFB0B5399C4CD42D650ACDBDF0017D5F44F843", + "KEK_hex":"7D86EDC41521B847AD5F2F77E71761F239CC33CB7126A0B1" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'02D1F7E6F26C43D4868D87CE'}, h'256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F', [[h'A1013820', {-2: {-1: 3, -2: h'00F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E01', -3: h'01031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'CFDA89F747BD0380D81AEA6892573AE1F447D07149CCDD4B775B582DBBF76904F6EFDC288BA87F62']]])", + "cbor":"D8608443A10103A1054C02D1F7E6F26C43D4868D87CE5824256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F818344A1013820A221A4200321584200F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E0122584201031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655828CFDA89F747BD0380D81AEA6892573AE1F447D07149CCDD4B775B582DBBF76904F6EFDC288BA87F62" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-192-03.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-192-03.json new file mode 100644 index 0000000..102bdb5 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-192-03.json @@ -0,0 +1,56 @@ +{ + "title":"p521-ss-wrap-128-03: ECDH-SS direct w/ AES-192 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-SS-A192KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-521", + "x":"APP1tIC1Ey2__4aekg06nicpK3uvQELX7HPaZUXYf2qd-YCYZlR7L6RqW0CiGjNv9uyJ5srxdRb_St87pwbfZx4B", + "y":"AQMe7-xEu5s49sLiFXIGsY4FVgAxFe6HW1nT3sqOcqgkFs0_Y7fWpDkAGLc1Og3Qqmt7-8-7d0fTW1nNtf5RJqdM", + "d":"Af9IsRGlT6A-iPBgaSukjyB6A0LP6GTcw9wO-e71yUfMbb9YJMnjYFq1DBjjvxEyI35mjP-k115wW0q9LxYPvlRt" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852C2772BFB570B2D11D2CD3C5B6888AFEF" + ] + }, + "intermediates":{ + "CEK_hex":"02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852C2772BFB570B2D11D2CD3C5B6888AFEF", + "recipients":[ + { + "Context_hex":"842383F6F6F683F6F6F68218C044A1013820", + "Secret_hex":"017B26D9F28ADF910A8D0B7BDBC3A57682E2D267E4D14473AC38F4FDA6FF9B90CA6FB9D3A4BD4BC6235111D134223DAFB0B5399C4CD42D650ACDBDF0017D5F44F843", + "KEK_hex":"7D86EDC41521B847AD5F2F77E71761F239CC33CB7126A0B1" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'D666AE264277E9B4345AFBCD83317AED530C46C7E43D52671C13EEB92415249035A9A01A397A11A60EBD212402468EE4403F388D1E5D878B35BD2B0292B90883', [[h'A1013820', {-2: {-1: 3, -2: h'00F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E01', -3: h'01031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'DA8425C0454C9F5BFED9477CB5E4A1D3CE7B00FF2AAC666A05E6053E34278B75C841095C6C178BD8243C1778C2301A98CE7087B3815DDDB905AB26F258B00BADA4CDE35911282AA7']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E5840D666AE264277E9B4345AFBCD83317AED530C46C7E43D52671C13EEB92415249035A9A01A397A11A60EBD212402468EE4403F388D1E5D878B35BD2B0292B90883818344A1013820A221A4200321584200F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E0122584201031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655848DA8425C0454C9F5BFED9477CB5E4A1D3CE7B00FF2AAC666A05E6053E34278B75C841095C6C178BD8243C1778C2301A98CE7087B3815DDDB905AB26F258B00BADA4CDE35911282AA7" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-256-01.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-256-01.json new file mode 100644 index 0000000..67edd68 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-256-01.json @@ -0,0 +1,56 @@ +{ + "title":"p521-ss-wrap-256-01: ECDH-SS direct w/ wrap 256 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-SS-A256KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-521", + "x":"APP1tIC1Ey2__4aekg06nicpK3uvQELX7HPaZUXYf2qd-YCYZlR7L6RqW0CiGjNv9uyJ5srxdRb_St87pwbfZx4B", + "y":"AQMe7-xEu5s49sLiFXIGsY4FVgAxFe6HW1nT3sqOcqgkFs0_Y7fWpDkAGLc1Og3Qqmt7-8-7d0fTW1nNtf5RJqdM", + "d":"Af9IsRGlT6A-iPBgaSukjyB6A0LP6GTcw9wO-e71yUfMbb9YJMnjYFq1DBjjvxEyI35mjP-k115wW0q9LxYPvlRt" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A", + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"B2353161740AACF1F7163647984B522A", + "recipients":[ + { + "Context_hex":"842483F6F6F683F6F6F68219010044A1013821", + "Secret_hex":"017B26D9F28ADF910A8D0B7BDBC3A57682E2D267E4D14473AC38F4FDA6FF9B90CA6FB9D3A4BD4BC6235111D134223DAFB0B5399C4CD42D650ACDBDF0017D5F44F843", + "KEK_hex":"D54DB74FCFB13AC9E82749D8BBAD48568C3D83C862843EED6D21C2E01CC30DC8" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'64F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B', [[h'A1013821', {-2: {-1: 3, -2: h'00F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E01', -3: h'01031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'E322636D8AB5B809B718F4569CD849C38FFE9DA482EADA7F']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582464F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B818344A1013821A221A4200321584200F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E0122584201031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655818E322636D8AB5B809B718F4569CD849C38FFE9DA482EADA7F" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-256-02.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-256-02.json new file mode 100644 index 0000000..5310b6e --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-256-02.json @@ -0,0 +1,56 @@ +{ + "title":"p521-ss-wrap-256-02: ECDH-SS direct w/ key wrap 256 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-SS-A256KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-521", + "x":"APP1tIC1Ey2__4aekg06nicpK3uvQELX7HPaZUXYf2qd-YCYZlR7L6RqW0CiGjNv9uyJ5srxdRb_St87pwbfZx4B", + "y":"AQMe7-xEu5s49sLiFXIGsY4FVgAxFe6HW1nT3sqOcqgkFs0_Y7fWpDkAGLc1Og3Qqmt7-8-7d0fTW1nNtf5RJqdM", + "d":"Af9IsRGlT6A-iPBgaSukjyB6A0LP6GTcw9wO-e71yUfMbb9YJMnjYFq1DBjjvxEyI35mjP-k115wW0q9LxYPvlRt" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "recipients":[ + { + "Context_hex":"842483F6F6F683F6F6F68219010044A1013821", + "Secret_hex":"017B26D9F28ADF910A8D0B7BDBC3A57682E2D267E4D14473AC38F4FDA6FF9B90CA6FB9D3A4BD4BC6235111D134223DAFB0B5399C4CD42D650ACDBDF0017D5F44F843", + "KEK_hex":"D54DB74FCFB13AC9E82749D8BBAD48568C3D83C862843EED6D21C2E01CC30DC8" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'02D1F7E6F26C43D4868D87CE'}, h'256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F', [[h'A1013821', {-2: {-1: 3, -2: h'00F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E01', -3: h'01031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'F1CDA91C895A807F3E1EA764E69629EDC322A2BB2BE33DBA4C5168ADDE62005795D848CC28018C10']]])", + "cbor":"D8608443A10103A1054C02D1F7E6F26C43D4868D87CE5824256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F818344A1013821A221A4200321584200F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E0122584201031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655828F1CDA91C895A807F3E1EA764E69629EDC322A2BB2BE33DBA4C5168ADDE62005795D848CC28018C10" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-256-03.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-256-03.json new file mode 100644 index 0000000..e2385e4 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-ss-wrap-256-03.json @@ -0,0 +1,56 @@ +{ + "title":"p521-ss-wrap-256-03: ECDH-SS direct w/ aes-wrap for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-SS-A256KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + }, + "sender_key":{ + "kty":"EC", + "crv":"P-521", + "x":"APP1tIC1Ey2__4aekg06nicpK3uvQELX7HPaZUXYf2qd-YCYZlR7L6RqW0CiGjNv9uyJ5srxdRb_St87pwbfZx4B", + "y":"AQMe7-xEu5s49sLiFXIGsY4FVgAxFe6HW1nT3sqOcqgkFs0_Y7fWpDkAGLc1Og3Qqmt7-8-7d0fTW1nNtf5RJqdM", + "d":"Af9IsRGlT6A-iPBgaSukjyB6A0LP6GTcw9wO-e71yUfMbb9YJMnjYFq1DBjjvxEyI35mjP-k115wW0q9LxYPvlRt" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88522CD81CA6C3B47139724AD1D4309098EC" + ] + }, + "intermediates":{ + "CEK_hex":"02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88522CD81CA6C3B47139724AD1D4309098EC", + "recipients":[ + { + "Context_hex":"842483F6F6F683F6F6F68219010044A1013821", + "Secret_hex":"017B26D9F28ADF910A8D0B7BDBC3A57682E2D267E4D14473AC38F4FDA6FF9B90CA6FB9D3A4BD4BC6235111D134223DAFB0B5399C4CD42D650ACDBDF0017D5F44F843", + "KEK_hex":"D54DB74FCFB13AC9E82749D8BBAD48568C3D83C862843EED6D21C2E01CC30DC8" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'C0D81EE9617FC80C75E33057CFA3A45794DC56793580B2564ABE4BD820C6CC58440AD86F18454429D5F3D2B01259645C65BF90ED96A04D5CD98F58D083DDD20E', [[h'A1013821', {-2: {-1: 3, -2: h'00F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E01', -3: h'01031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C', 1: 2}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'FE219F4BE502C74FF314230732AB77EDC5B3EAE7D068A0B2889EAA929CE23F6A04A0161757591D49FFA0D2678EA0FA68914F3086522E7D4553DC9E2F49A7C12FCE8A622EA5719070']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E5840C0D81EE9617FC80C75E33057CFA3A45794DC56793580B2564ABE4BD820C6CC58440AD86F18454429D5F3D2B01259645C65BF90ED96A04D5CD98F58D083DDD20E818344A1013821A221A4200321584200F3F5B480B5132DBFFF869E920D3A9E27292B7BAF4042D7EC73DA6545D87F6A9DF9809866547B2FA46A5B40A21A336FF6EC89E6CAF17516FF4ADF3BA706DF671E0122584201031EEFEC44BB9B38F6C2E2157206B18E0556003115EE875B59D3DECA8E72A82416CD3F63B7D6A4390018B7353A0DD0AA6B7BFBCFBB7747D35B59CDB5FE5126A74C01020458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655848FE219F4BE502C74FF314230732AB77EDC5B3EAE7D068A0B2889EAA929CE23F6A04A0161757591D49FFA0D2678EA0FA68914F3086522E7D4553DC9E2F49A7C12FCE8A622EA5719070" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-128-01.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-128-01.json new file mode 100644 index 0000000..4551bab --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-128-01.json @@ -0,0 +1,50 @@ +{ + "title":"p521-wrap-128-01: ECDH-ES direct w/ key wrap 128 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-ES-A128KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A", + "02D1F7E6F26C43D4868D87CE", + "848DF1C3C9CF4DF2FE6C632BF7886413F76E88526B37FD0B58734CA925A389AD361ECEF28358CFDC1CA6D690CF1964458D425A7A4EE4D931EC070638E4E78E89A5A4" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"B2353161740AACF1F7163647984B522A", + "recipients":[ + { + "Context_hex":"842283F6F6F683F6F6F682188044A101381C", + "Secret_hex":"00C70F447648E5585E4D3E8116F9ED23CB53BD0CC081ACF568BBB3920537F7401AEC3625A4512ACBD41C9553E5F33CCB93E49625354ADD91378DF9F6E790F51CCB1F", + "KEK_hex":"0208A883C9E5449367265D838B910235" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'64F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B', [[h'A101381C', {-1: {1: 2, -1: 3, -2: h'00790FF988875233F821CC919CCD19137A4985C4FD1A41546E5C8EB4172E9FD153B47F1C0B30DE54D75F4DAAED9B4A29D756577959D1AF4C2126CEBF3FF2703E2BF9', -3: h'01098DEC92309CECC4E1AD02DC7CF43EBE63BA606B34944119C9AA565A6A0C9198BF900CF2CEA7A90C1067C60D4ED5EC22BC134F422A3147CB88A4FB279EAA5911F8'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'AD60C775300EFF4994D954D7BC02B322375B91CFAF2B60DC']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582464F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B818344A101381CA220A40102200321584200790FF988875233F821CC919CCD19137A4985C4FD1A41546E5C8EB4172E9FD153B47F1C0B30DE54D75F4DAAED9B4A29D756577959D1AF4C2126CEBF3FF2703E2BF922584201098DEC92309CECC4E1AD02DC7CF43EBE63BA606B34944119C9AA565A6A0C9198BF900CF2CEA7A90C1067C60D4ED5EC22BC134F422A3147CB88A4FB279EAA5911F80458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655818AD60C775300EFF4994D954D7BC02B322375B91CFAF2B60DC" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-128-02.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-128-02.json new file mode 100644 index 0000000..9c3f5b8 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-128-02.json @@ -0,0 +1,50 @@ +{ + "title":"p521-wrap-128-02: ECDH-ES direct w/ key wrap 128 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-ES-A128KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "02D1F7E6F26C43D4868D87CE", + "F76E885238FB137F6C20764D89E26452937675B5E3B4E89FD3534E1ABAF69C65CFE0670274670708AC607C6782DADF86EE06A82C499EFD468F929D9D9DD1041CF436" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "recipients":[ + { + "Context_hex":"842283F6F6F683F6F6F682188044A101381C", + "Secret_hex":"0171AF032D3F025BD5038A063036B039AAB6B170E7E6327916C1EE3E398316EA3E2AA9D37DFCC39C80ACDBF98971B36CDD2DBCB2071CCCC956841F151B528071DDE8", + "KEK_hex":"2053C13661D10F1984D99D7851E836C6" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'02D1F7E6F26C43D4868D87CE'}, h'256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F', [[h'A101381C', {-1: {1: 2, -1: 3, -2: h'01118B1EB02274976993694D310DB8B2935488DEC231AD6D1EB78F124E080173D7C9454B30E017FDBF9ADF7D5EA69DCBCAD64AF48D06AF090E76F4CBD4A236507DF6', -3: h'00FC0F961FA1C470060C7B650CD6761B741E3C78209DC258FE22B04DA3D08F34E28D3831435DC4DB85F52CE3D0BD855DB1B51B363C8B965B0B0E4AFA862328076F5C'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'EB90AEC77B834C3FAFDF834374F5D6CC4251CA779BA2BB8039602294655CF6B9747673E551BFD693']]])", + "cbor":"D8608443A10103A1054C02D1F7E6F26C43D4868D87CE5824256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F818344A101381CA220A40102200321584201118B1EB02274976993694D310DB8B2935488DEC231AD6D1EB78F124E080173D7C9454B30E017FDBF9ADF7D5EA69DCBCAD64AF48D06AF090E76F4CBD4A236507DF622584200FC0F961FA1C470060C7B650CD6761B741E3C78209DC258FE22B04DA3D08F34E28D3831435DC4DB85F52CE3D0BD855DB1B51B363C8B965B0B0E4AFA862328076F5C0458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655828EB90AEC77B834C3FAFDF834374F5D6CC4251CA779BA2BB8039602294655CF6B9747673E551BFD693" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-128-03.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-128-03.json new file mode 100644 index 0000000..5e83582 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-128-03.json @@ -0,0 +1,50 @@ +{ + "title":"p521-wrap-128-03: ECDH-ES direct w/ AES-128 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-ES-A128KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852C2772BFB570B2D11D2CD3C5B6888AFEF", + "8F5B85262CF0883057ECE28A42963624FB1FB757DF852E7CD950CB00B208FDC56D8BFC4AFFF671B58BC10E4533680C9EC877F47BF8547450C539ADF3F1611D32A01D" + ] + }, + "intermediates":{ + "CEK_hex":"02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852C2772BFB570B2D11D2CD3C5B6888AFEF", + "recipients":[ + { + "Context_hex":"842283F6F6F683F6F6F682188044A101381C", + "Secret_hex":"01D3DC502774555A929FA1368BA2D5E7C3EBF96CE2E4D611DD7109562068993E1131BC5DB5DD49874722218BD23F5925FC2F9AD98F5A8A6773BB04B8D01AA3EB625F", + "KEK_hex":"B328492332EA43C2153742C9EBF78A4D" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'D666AE264277E9B4345AFBCD83317AED530C46C7E43D52671C13EEB92415249035A9A01A397A11A60EBD212402468EE4403F388D1E5D878B35BD2B0292B90883', [[h'A101381C', {-1: {1: 2, -1: 3, -2: h'00BEBB1995854D8C2928453B585315C451183DF1DFB70DB73B63044F0B726EECF5351075C6DD6DE19C53D9070A68D671D9AA50F94B7BC7D08DD53E17CD1399D9EA16', -3: h'006DC444781BDE859B6D4A7ED510B335446D5D800D7C212E76CFA0157A2D9C6ECB0F6A6DD0D9F34AB2430B6128586F497B0EE4C5ED97770376340207FC3E3D749241'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'D258E1068ABE0CAD46D69E91FD00DBEFD4981CD682533C892C302483C9294F4005B835816D5E431A05F64897FD3C0A52F24A4E9703AE3CF718C18D7C88B866BF06C01A6760EABF1C']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E5840D666AE264277E9B4345AFBCD83317AED530C46C7E43D52671C13EEB92415249035A9A01A397A11A60EBD212402468EE4403F388D1E5D878B35BD2B0292B90883818344A101381CA220A40102200321584200BEBB1995854D8C2928453B585315C451183DF1DFB70DB73B63044F0B726EECF5351075C6DD6DE19C53D9070A68D671D9AA50F94B7BC7D08DD53E17CD1399D9EA16225842006DC444781BDE859B6D4A7ED510B335446D5D800D7C212E76CFA0157A2D9C6ECB0F6A6DD0D9F34AB2430B6128586F497B0EE4C5ED97770376340207FC3E3D7492410458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655848D258E1068ABE0CAD46D69E91FD00DBEFD4981CD682533C892C302483C9294F4005B835816D5E431A05F64897FD3C0A52F24A4E9703AE3CF718C18D7C88B866BF06C01A6760EABF1C" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-192-01.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-192-01.json new file mode 100644 index 0000000..2ec2149 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-192-01.json @@ -0,0 +1,50 @@ +{ + "title":"p521-wrap-128-01: ECDH-ES direct w/ key wrap 192 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-ES-A192KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A", + "02D1F7E6F26C43D4868D87CE", + "848DF1C3C9CF4DF2FE6C632BF7886413F76E88526B37FD0B58734CA925A389AD361ECEF28358CFDC1CA6D690CF1964458D425A7A4EE4D931EC070638E4E78E89A5A4" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"B2353161740AACF1F7163647984B522A", + "recipients":[ + { + "Context_hex":"842383F6F6F683F6F6F68218C044A101381D", + "Secret_hex":"00C70F447648E5585E4D3E8116F9ED23CB53BD0CC081ACF568BBB3920537F7401AEC3625A4512ACBD41C9553E5F33CCB93E49625354ADD91378DF9F6E790F51CCB1F", + "KEK_hex":"C5A6F2C6B856230304652FC0BA67C77070783CA812E0A8B9" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'64F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B', [[h'A101381D', {-1: {1: 2, -1: 3, -2: h'00790FF988875233F821CC919CCD19137A4985C4FD1A41546E5C8EB4172E9FD153B47F1C0B30DE54D75F4DAAED9B4A29D756577959D1AF4C2126CEBF3FF2703E2BF9', -3: h'01098DEC92309CECC4E1AD02DC7CF43EBE63BA606B34944119C9AA565A6A0C9198BF900CF2CEA7A90C1067C60D4ED5EC22BC134F422A3147CB88A4FB279EAA5911F8'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'AF1599C80DEB5DD020D4B9392708B6D99C7EA0302A224724']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582464F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B818344A101381DA220A40102200321584200790FF988875233F821CC919CCD19137A4985C4FD1A41546E5C8EB4172E9FD153B47F1C0B30DE54D75F4DAAED9B4A29D756577959D1AF4C2126CEBF3FF2703E2BF922584201098DEC92309CECC4E1AD02DC7CF43EBE63BA606B34944119C9AA565A6A0C9198BF900CF2CEA7A90C1067C60D4ED5EC22BC134F422A3147CB88A4FB279EAA5911F80458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655818AF1599C80DEB5DD020D4B9392708B6D99C7EA0302A224724" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-192-02.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-192-02.json new file mode 100644 index 0000000..8e5ba89 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-192-02.json @@ -0,0 +1,50 @@ +{ + "title":"p521-wrap-128-02: ECDH-ES direct w/ key wrap 192 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-ES-A192KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "02D1F7E6F26C43D4868D87CE", + "F76E885238FB137F6C20764D89E26452937675B5E3B4E89FD3534E1ABAF69C65CFE0670274670708AC607C6782DADF86EE06A82C499EFD468F929D9D9DD1041CF436" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "recipients":[ + { + "Context_hex":"842383F6F6F683F6F6F68218C044A101381D", + "Secret_hex":"0171AF032D3F025BD5038A063036B039AAB6B170E7E6327916C1EE3E398316EA3E2AA9D37DFCC39C80ACDBF98971B36CDD2DBCB2071CCCC956841F151B528071DDE8", + "KEK_hex":"1386DED12F04127199BA4B189A054F6600AD66CEE07D154B" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'02D1F7E6F26C43D4868D87CE'}, h'256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F', [[h'A101381D', {-1: {1: 2, -1: 3, -2: h'01118B1EB02274976993694D310DB8B2935488DEC231AD6D1EB78F124E080173D7C9454B30E017FDBF9ADF7D5EA69DCBCAD64AF48D06AF090E76F4CBD4A236507DF6', -3: h'00FC0F961FA1C470060C7B650CD6761B741E3C78209DC258FE22B04DA3D08F34E28D3831435DC4DB85F52CE3D0BD855DB1B51B363C8B965B0B0E4AFA862328076F5C'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'0A7AAC87FAE5ED32F49C4910A3CB9EE26D572EA5AB92BFD48DCC332957703D181C9335693917EDBA']]])", + "cbor":"D8608443A10103A1054C02D1F7E6F26C43D4868D87CE5824256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F818344A101381DA220A40102200321584201118B1EB02274976993694D310DB8B2935488DEC231AD6D1EB78F124E080173D7C9454B30E017FDBF9ADF7D5EA69DCBCAD64AF48D06AF090E76F4CBD4A236507DF622584200FC0F961FA1C470060C7B650CD6761B741E3C78209DC258FE22B04DA3D08F34E28D3831435DC4DB85F52CE3D0BD855DB1B51B363C8B965B0B0E4AFA862328076F5C0458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6558280A7AAC87FAE5ED32F49C4910A3CB9EE26D572EA5AB92BFD48DCC332957703D181C9335693917EDBA" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-192-03.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-192-03.json new file mode 100644 index 0000000..6007413 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-192-03.json @@ -0,0 +1,50 @@ +{ + "title":"p521-wrap-128-03: ECDH-ES direct w/ AES-192 for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-ES-A192KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852C2772BFB570B2D11D2CD3C5B6888AFEF", + "8F5B85262CF0883057ECE28A42963624FB1FB757DF852E7CD950CB00B208FDC56D8BFC4AFFF671B58BC10E4533680C9EC877F47BF8547450C539ADF3F1611D32A01D" + ] + }, + "intermediates":{ + "CEK_hex":"02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E8852C2772BFB570B2D11D2CD3C5B6888AFEF", + "recipients":[ + { + "Context_hex":"842383F6F6F683F6F6F68218C044A101381D", + "Secret_hex":"01D3DC502774555A929FA1368BA2D5E7C3EBF96CE2E4D611DD7109562068993E1131BC5DB5DD49874722218BD23F5925FC2F9AD98F5A8A6773BB04B8D01AA3EB625F", + "KEK_hex":"07039AD491EC95B1A7928ADABD6EA1D0F2D5C3D0893BE132" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'D666AE264277E9B4345AFBCD83317AED530C46C7E43D52671C13EEB92415249035A9A01A397A11A60EBD212402468EE4403F388D1E5D878B35BD2B0292B90883', [[h'A101381D', {-1: {1: 2, -1: 3, -2: h'00BEBB1995854D8C2928453B585315C451183DF1DFB70DB73B63044F0B726EECF5351075C6DD6DE19C53D9070A68D671D9AA50F94B7BC7D08DD53E17CD1399D9EA16', -3: h'006DC444781BDE859B6D4A7ED510B335446D5D800D7C212E76CFA0157A2D9C6ECB0F6A6DD0D9F34AB2430B6128586F497B0EE4C5ED97770376340207FC3E3D749241'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'5D1C6D823D5ED035903B6284905E3D13737870C0931B0CCB10475AA14F6ACF0EE4216FBADAC6198E629340B3C59E3749E2A0C66230CB4C68681CB9037047BF767C093300B5F267D2']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E5840D666AE264277E9B4345AFBCD83317AED530C46C7E43D52671C13EEB92415249035A9A01A397A11A60EBD212402468EE4403F388D1E5D878B35BD2B0292B90883818344A101381DA220A40102200321584200BEBB1995854D8C2928453B585315C451183DF1DFB70DB73B63044F0B726EECF5351075C6DD6DE19C53D9070A68D671D9AA50F94B7BC7D08DD53E17CD1399D9EA16225842006DC444781BDE859B6D4A7ED510B335446D5D800D7C212E76CFA0157A2D9C6ECB0F6A6DD0D9F34AB2430B6128586F497B0EE4C5ED97770376340207FC3E3D7492410458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C6558485D1C6D823D5ED035903B6284905E3D13737870C0931B0CCB10475AA14F6ACF0EE4216FBADAC6198E629340B3C59E3749E2A0C66230CB4C68681CB9037047BF767C093300B5F267D2" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-256-01.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-256-01.json new file mode 100644 index 0000000..85d30d8 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-256-01.json @@ -0,0 +1,50 @@ +{ + "title":"p521-wrap-256-01: ECDH-ES direct w/ wrap 256 for 128-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-ES-A256KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A", + "02D1F7E6F26C43D4868D87CE", + "848DF1C3C9CF4DF2FE6C632BF7886413F76E885252908DF901D1581A045444DD996E1704B9B63082660901A9B9CD87AACB7113A9074A5F38437E72D2B3CE022FBF1F" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"B2353161740AACF1F7163647984B522A", + "recipients":[ + { + "Context_hex":"842483F6F6F683F6F6F68219010044A101381E", + "Secret_hex":"01055FA9FFA68691925434B87D513862CC91869E1431E404CEBE431689EBFD93AABFE642B143585DE199EF3A08AA69D1837C8A97C486A3B6375F6965C0B1BA6EDBFC", + "KEK_hex":"CE3B7A8D5A388B806F1F23BAA17455DE4794F109D0D61C873F9E66B256F803D8" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'64F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B', [[h'A101381E', {-1: {1: 2, -1: 3, -2: h'00660166E1526532A24030C773182F1410639E4972C649CF17698935BEA24FAE0E20505CFD30C335DA4ABBB21A1EF6A7E5BFDD04D8539CBE505D24821702BF399221', -3: h'00204FAFA97FDCF8373AB0E2EF5524CFFAC3FDCD02BE36008371031C440C9D978BE67DC99CE07A641BF443DA053BB0839E2D319725FF1F20C46C965EBFDFEF8B02B4'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'998F2525381347FF57E67C43ACB867A05567CE3D9FC01336']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582464F84D913BA60A76070A9A48F26E97E863E2852948658F0811139868826E89218A75715B818344A101381EA220A40102200321584200660166E1526532A24030C773182F1410639E4972C649CF17698935BEA24FAE0E20505CFD30C335DA4ABBB21A1EF6A7E5BFDD04D8539CBE505D24821702BF39922122584200204FAFA97FDCF8373AB0E2EF5524CFFAC3FDCD02BE36008371031C440C9D978BE67DC99CE07A641BF443DA053BB0839E2D319725FF1F20C46C965EBFDFEF8B02B40458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655818998F2525381347FF57E67C43ACB867A05567CE3D9FC01336" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-256-02.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-256-02.json new file mode 100644 index 0000000..678b0ce --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-256-02.json @@ -0,0 +1,50 @@ +{ + "title":"p521-wrap-256-02: ECDH-ES direct w/ key wrap 256 for 256-bit key", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-ES-A256KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "02D1F7E6F26C43D4868D87CE", + "F76E88527FAC271A4C7EA34B7E28D7BBB54C682BED7A512C9CC879517ADCF0FA768E90A571D2223BFCA3FD8C32D1217D9ECAE1CB4B8B8F207B6C5929F842D569B262" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"B2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413", + "recipients":[ + { + "Context_hex":"842483F6F6F683F6F6F68219010044A101381E", + "Secret_hex":"00BEF13B0A00BDB0B051EAAEC41CEE0310FCBB7F61506DAD661F9EA7EF405EC96F041859A95C9D1B2785CBB4A934A564C9BD7687BB64949010C769DD7F927A8CD4BB", + "KEK_hex":"145A50CC9BED26CA74570341181A550CACBED1951E3EEF0BAB6444216EBF8F2D" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'02D1F7E6F26C43D4868D87CE'}, h'256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F', [[h'A101381E', {-1: {1: 2, -1: 3, -2: h'01C97A1A9F1EED9F3D168F12AFC2FE1A1F86F1559C5F21DBBE5F5C36006B0E8BDE096400BACA2CB1E178A3F1E88DF3E5333F30B0B8A4261E8C35B1E62E603B25D8CB', -3: h'0128AACFA5E390E978FF4C9CFDBCE9610FC2B6D89CFEE27C73880C256C6A1B1A89BF771B8806DA1DF36817B405EC124A32D0BEC3BD337687ACC79825794C099BD310'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'355E1B6E810A43189F4356AC607A07E2374B38FE5823CAC496F913B20EA710A2BACFC5535D0FD8D8']]])", + "cbor":"D8608443A10103A1054C02D1F7E6F26C43D4868D87CE5824256B748DEB647131C12A10AC261DA0628E420492A36F3DED8642B4B6FA1EB15DCEC80A0F818344A101381EA220A40102200321584201C97A1A9F1EED9F3D168F12AFC2FE1A1F86F1559C5F21DBBE5F5C36006B0E8BDE096400BACA2CB1E178A3F1E88DF3E5333F30B0B8A4261E8C35B1E62E603B25D8CB2258420128AACFA5E390E978FF4C9CFDBCE9610FC2B6D89CFEE27C73880C256C6A1B1A89BF771B8806DA1DF36817B405EC124A32D0BEC3BD337687ACC79825794C099BD3100458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C655828355E1B6E810A43189F4356AC607A07E2374B38FE5823CAC496F913B20EA710A2BACFC5535D0FD8D8" + } +} diff --git a/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-256-03.json b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-256-03.json new file mode 100644 index 0000000..e143064 --- /dev/null +++ b/src/test/resources/Examples/ecdh-wrap-examples/p521-wrap-256-03.json @@ -0,0 +1,50 @@ +{ + "title":"p521-wrap-256-03: ECDH-ES direct w/ aes-wrap for 512-bit key", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"enc", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ECDH-ES-A256KW" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@buckland.example" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88522CD81CA6C3B47139724AD1D4309098EC", + "95C70DA0D03E20786B0770D600EC08B2E95C4F5881CFC4EE91F5D502ED4CF810A3C1233527CD2E77C78B912CCC8E31D1E5F45FDD43CC61C25037CF53EBFCEC7A496B" + ] + }, + "intermediates":{ + "CEK_hex":"02D1F7E6F26C43D4868D87CEB2353161740AACF1F7163647984B522A848DF1C3C9CF4DF2FE6C632BF7886413F76E88522CD81CA6C3B47139724AD1D4309098EC", + "recipients":[ + { + "Context_hex":"842483F6F6F683F6F6F68219010044A101381E", + "Secret_hex":"007B0CBC7704280BBF4170C07B82180C9DDC0B3C50C0AD57EF648C6A3C592563384FFB7B410053A04CCD877CA3F269F2B9AF130432E20C9B28004EBF4AEFEE970D9B", + "KEK_hex":"F24A5686C9E8AF25AC7D05A45AE61D1D70313345B0F247435C38A5405775B286" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'C0D81EE9617FC80C75E33057CFA3A45794DC56793580B2564ABE4BD820C6CC58440AD86F18454429D5F3D2B01259645C65BF90ED96A04D5CD98F58D083DDD20E', [[h'A101381E', {-1: {1: 2, -1: 3, -2: h'0152CE61790CCF5588A7A08F017E461871A3F76B25B28BC1FB4D6B8FD9F7A1EC81A8E2246BC3FA3B7D4A4AA0C96B1EB6165881D0B0034036F273A69C1CACFF50CD5A', -3: h'0046845542279B7833ED8E79E567BE74B7A3CA638CD79E019D4E83666C6CA4C1FC52E903FDFD01A15D8041C7747E9C0D25F879D59CA37CF7A4893D8B2EE514A38260'}, 4: h'6D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65'}, h'86C4162F0D7F7A57E97CDF31583C28C6C542DE20589F94A6B63489269C03473C02D0CE06459B97F6A0DF3F5985076031F9A9A3B15EA8622570D739DEF806D2221CAD2BF7C5826B50']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E5840C0D81EE9617FC80C75E33057CFA3A45794DC56793580B2564ABE4BD820C6CC58440AD86F18454429D5F3D2B01259645C65BF90ED96A04D5CD98F58D083DDD20E818344A101381EA220A4010220032158420152CE61790CCF5588A7A08F017E461871A3F76B25B28BC1FB4D6B8FD9F7A1EC81A8E2246BC3FA3B7D4A4AA0C96B1EB6165881D0B0034036F273A69C1CACFF50CD5A2258420046845542279B7833ED8E79E567BE74B7A3CA638CD79E019D4E83666C6CA4C1FC52E903FDFD01A15D8041C7747E9C0D25F879D59CA37CF7A4893D8B2EE514A382600458246D65726961646F632E6272616E64796275636B406275636B6C616E642E6578616D706C65584886C4162F0D7F7A57E97CDF31583C28C6C542DE20589F94A6B63489269C03473C02D0CE06459B97F6A0DF3F5985076031F9A9A3B15EA8622570D739DEF806D2221CAD2BF7C5826B50" + } +} diff --git a/src/test/resources/Examples/ecdsa-examples/ecdsa-01.json b/src/test/resources/Examples/ecdsa-examples/ecdsa-01.json new file mode 100644 index 0000000..1624694 --- /dev/null +++ b/src/test/resources/Examples/ecdsa-examples/ecdsa-01.json @@ -0,0 +1,41 @@ +{ + "title":"ECDSA-01: ECDSA - P-256", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "protected":{ + "ctyp":0 + }, + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + } + ] + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E617475726543A1030043A101264054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'A10300', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10126', {4: h'3131'}, h'D71C05DB52C9CE7F1BF5AAC01334BBEACAC1D86A2303E6EEAA89266F45C01ED602CA649EAF790D8BC99D2458457CA6A872061940E7AFBE48E289DFAC146AE258']]])", + "cbor":"D8628443A10300A054546869732069732074686520636F6E74656E742E818343A10126A1044231315840D71C05DB52C9CE7F1BF5AAC01334BBEACAC1D86A2303E6EEAA89266F45C01ED602CA649EAF790D8BC99D2458457CA6A872061940E7AFBE48E289DFAC146AE258" + } +} diff --git a/src/test/resources/Examples/ecdsa-examples/ecdsa-02.json b/src/test/resources/Examples/ecdsa-examples/ecdsa-02.json new file mode 100644 index 0000000..235c304 --- /dev/null +++ b/src/test/resources/Examples/ecdsa-examples/ecdsa-02.json @@ -0,0 +1,38 @@ +{ + "title":"ECDSA-02: ECDSA - P-384", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"P384", + "crv":"P-384", + "x":"kTJyP2KSsBBhnb4kjWmMF7WHVsY55xUPgb7k64rDcjatChoZ1nvjKmYmPh5STRKc", + "y":"mM0weMVU2DKsYDxDJkEP9hZiRZtB8fPfXbzINZj_fF7YQRynNWedHEyzAJOX2e8s", + "d":"ok3Nq97AXlpEusO7jIy1FZATlBP9PNReMU7DWbkLQ5dU90snHuuHVDjEPmtV0fTo" + }, + "unprotected":{ + "kid":"P384" + }, + "protected":{ + "alg":"ES384" + } + } + ] + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E61747572654044A10138224054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'', {}, h'546869732069732074686520636F6E74656E742E', [[h'A1013822', {4: h'50333834'}, h'230DF24B9F31DD2D7D1B9C33CE59073FC21E02BB63DC55847626B5B7F43905D59ACC186890BC1FE8B6D12E61B0373FFBA131ECC6C21958CDFF28AD77E0C32F9A0C6CA247135F538496228B2BE5557E7DBD7280DB24B46B68C0772D1BAEF09DE5']]])", + "cbor":"D8628440A054546869732069732074686520636F6E74656E742E818344A1013822A10444503338345860230DF24B9F31DD2D7D1B9C33CE59073FC21E02BB63DC55847626B5B7F43905D59ACC186890BC1FE8B6D12E61B0373FFBA131ECC6C21958CDFF28AD77E0C32F9A0C6CA247135F538496228B2BE5557E7DBD7280DB24B46B68C0772D1BAEF09DE5" + } +} diff --git a/src/test/resources/Examples/ecdsa-examples/ecdsa-03.json b/src/test/resources/Examples/ecdsa-examples/ecdsa-03.json new file mode 100644 index 0000000..16e5d89 --- /dev/null +++ b/src/test/resources/Examples/ecdsa-examples/ecdsa-03.json @@ -0,0 +1,39 @@ +{ + "title":"ECDSA-03: ECDSA - P-512", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"sig", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ES512" + }, + "unprotected":{ + "kid":"bilbo.baggins@hobbiton.example" + } + } + ] + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E61747572654044A10138234054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'', {}, h'546869732069732074686520636F6E74656E742E', [[h'A1013823', {4: h'62696C626F2E62616767696E7340686F626269746F6E2E6578616D706C65'}, h'00A2D28A7C2BDB1587877420F65ADF7D0B9A06635DD1DE64BB62974C863F0B160DD2163734034E6AC003B01E8705524C5C4CA479A952F0247EE8CB0B4FB7397BA08D009E0C8BF482270CC5771AA143966E5A469A09F613488030C5B07EC6D722E3835ADB5B2D8C44E95FFB13877DD2582866883535DE3BB03D01753F83AB87BB4F7A0297']]])", + "cbor":"D8628440A054546869732069732074686520636F6E74656E742E818344A1013823A104581E62696C626F2E62616767696E7340686F626269746F6E2E6578616D706C65588400A2D28A7C2BDB1587877420F65ADF7D0B9A06635DD1DE64BB62974C863F0B160DD2163734034E6AC003B01E8705524C5C4CA479A952F0247EE8CB0B4FB7397BA08D009E0C8BF482270CC5771AA143966E5A469A09F613488030C5B07EC6D722E3835ADB5B2D8C44E95FFB13877DD2582866883535DE3BB03D01753F83AB87BB4F7A0297" + } +} diff --git a/src/test/resources/Examples/ecdsa-examples/ecdsa-04.json b/src/test/resources/Examples/ecdsa-examples/ecdsa-04.json new file mode 100644 index 0000000..98720ba --- /dev/null +++ b/src/test/resources/Examples/ecdsa-examples/ecdsa-04.json @@ -0,0 +1,38 @@ +{ + "title":"ECDSA-01: ECDSA - P-256 w/ SHA-512", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES512" + } + } + ] + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E61747572654044A10138234054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'', {}, h'546869732069732074686520636F6E74656E742E', [[h'A1013823', {4: h'3131'}, h'0CA5877D333B8E68B917551F947E0977BD3C70D416FDE3F9BB6A30CCBB96E875D0941FF22C5DB4087124FB1981A88B2B34C7EE2827679B1318272C3D62622CC8']]])", + "cbor":"D8628440A054546869732069732074686520636F6E74656E742E818344A1013823A10442313158400CA5877D333B8E68B917551F947E0977BD3C70D416FDE3F9BB6A30CCBB96E875D0941FF22C5DB4087124FB1981A88B2B34C7EE2827679B1318272C3D62622CC8" + } +} diff --git a/src/test/resources/Examples/ecdsa-examples/ecdsa-sig-01.json b/src/test/resources/Examples/ecdsa-examples/ecdsa-sig-01.json new file mode 100644 index 0000000..edc6cd7 --- /dev/null +++ b/src/test/resources/Examples/ecdsa-examples/ecdsa-sig-01.json @@ -0,0 +1,32 @@ +{ + "title":"ECDSA-01: ECDSA - P-256 - sign0", + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256", + "ctyp":0 + }, + "alg":"ES256" + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653145A2012603004054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"18([h'A201260300', {4: h'3131'}, h'546869732069732074686520636F6E74656E742E', h'6520BBAF2081D7E0ED0F95F76EB0733D667005F7467CEC4B87B9381A6BA1EDE8E00DF29F32A37230F39A842A54821FDD223092819D7728EFB9D3A0080B75380B'])", + "cbor":"D28445A201260300A10442313154546869732069732074686520636F6E74656E742E58406520BBAF2081D7E0ED0F95F76EB0733D667005F7467CEC4B87B9381A6BA1EDE8E00DF29F32A37230F39A842A54821FDD223092819D7728EFB9D3A0080B75380B" + } +} diff --git a/src/test/resources/Examples/ecdsa-examples/ecdsa-sig-02.json b/src/test/resources/Examples/ecdsa-examples/ecdsa-sig-02.json new file mode 100644 index 0000000..3830166 --- /dev/null +++ b/src/test/resources/Examples/ecdsa-examples/ecdsa-sig-02.json @@ -0,0 +1,31 @@ +{ + "title":"ECDSA-sig-02: ECDSA - P-384 - sign1", + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"EC", + "kid":"P384", + "crv":"P-384", + "x":"kTJyP2KSsBBhnb4kjWmMF7WHVsY55xUPgb7k64rDcjatChoZ1nvjKmYmPh5STRKc", + "y":"mM0weMVU2DKsYDxDJkEP9hZiRZtB8fPfXbzINZj_fF7YQRynNWedHEyzAJOX2e8s", + "d":"ok3Nq97AXlpEusO7jIy1FZATlBP9PNReMU7DWbkLQ5dU90snHuuHVDjEPmtV0fTo" + }, + "unprotected":{ + "kid":"P384" + }, + "protected":{ + "alg":"ES384" + }, + "alg":"ES384" + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653144A10138224054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"18([h'A1013822', {4: h'50333834'}, h'546869732069732074686520636F6E74656E742E', h'5F150ABD1C7D25B32065A14E05D6CB1F665D10769FF455EA9A2E0ADAB5DE63838DB257F0949C41E13330E110EBA7B912F34E1546FB1366A2568FAA91EC3E6C8D42F4A67A0EDF731D88C9AEAD52258B2E2C4740EF614F02E9D91E9B7B59622A3C'])", + "cbor":"D28444A1013822A104445033383454546869732069732074686520636F6E74656E742E58605F150ABD1C7D25B32065A14E05D6CB1F665D10769FF455EA9A2E0ADAB5DE63838DB257F0949C41E13330E110EBA7B912F34E1546FB1366A2568FAA91EC3E6C8D42F4A67A0EDF731D88C9AEAD52258B2E2C4740EF614F02E9D91E9B7B59622A3C" + } +} diff --git a/src/test/resources/Examples/ecdsa-examples/ecdsa-sig-03.json b/src/test/resources/Examples/ecdsa-examples/ecdsa-sig-03.json new file mode 100644 index 0000000..87e4ae0 --- /dev/null +++ b/src/test/resources/Examples/ecdsa-examples/ecdsa-sig-03.json @@ -0,0 +1,32 @@ +{ + "title":"ECDSA-03: ECDSA - P-512 - sign0", + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "alg":"ES512", + "key":{ + "kty":"EC", + "kid":"bilbo.baggins@hobbiton.example", + "use":"sig", + "crv":"P-521", + "x":"AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", + "y":"AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", + "d":"AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt" + }, + "protected":{ + "alg":"ES512" + }, + "unprotected":{ + "kid":"bilbo.baggins@hobbiton.example" + } + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653144A10138234054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"18([h'A1013823', {4: h'62696C626F2E62616767696E7340686F626269746F6E2E6578616D706C65'}, h'546869732069732074686520636F6E74656E742E', h'01664DD6962091B5100D6E1833D503539330EC2BC8FD3E8996950CE9F70259D9A30F73794F603B0D3E7C5E9C4C2A57E10211F76E79DF8FFD1B79D7EF5B9FA7DA109001965FA2D37E093BB13C040399C467B3B9908C09DB2B0F1F4996FE07BB02AAA121A8E1C671F3F997ADE7D651081017057BD3A8A5FBF394972EA71CFDC15E6F8FE2E1'])", + "cbor":"D28444A1013823A104581E62696C626F2E62616767696E7340686F626269746F6E2E6578616D706C6554546869732069732074686520636F6E74656E742E588401664DD6962091B5100D6E1833D503539330EC2BC8FD3E8996950CE9F70259D9A30F73794F603B0D3E7C5E9C4C2A57E10211F76E79DF8FFD1B79D7EF5B9FA7DA109001965FA2D37E093BB13C040399C467B3B9908C09DB2B0F1F4996FE07BB02AAA121A8E1C671F3F997ADE7D651081017057BD3A8A5FBF394972EA71CFDC15E6F8FE2E1" + } +} diff --git a/src/test/resources/Examples/ecdsa-examples/ecdsa-sig-04.json b/src/test/resources/Examples/ecdsa-examples/ecdsa-sig-04.json new file mode 100644 index 0000000..88dc9d1 --- /dev/null +++ b/src/test/resources/Examples/ecdsa-examples/ecdsa-sig-04.json @@ -0,0 +1,31 @@ +{ + "title":"ECDSA-sig-01: ECDSA - P-256 w/ SHA-512 - implicit", + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES512" + }, + "alg":"ES512" + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653144A10138234054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"18([h'A1013823', {4: h'3131'}, h'546869732069732074686520636F6E74656E742E', h'EB18B84ED674284E5ED861C3943E101BED5DB9F560C0F0292B34362990D1C59B10DF7946CBC6CA3DCBD6C17A6DD1D711F50337BAA6B4FCFAE0EFC70E52C1DE0F'])", + "cbor":"D28444A1013823A10442313154546869732069732074686520636F6E74656E742E5840EB18B84ED674284E5ED861C3943E101BED5DB9F560C0F0292B34362990D1C59B10DF7946CBC6CA3DCBD6C17A6DD1D711F50337BAA6B4FCFAE0EFC70E52C1DE0F" + } +} diff --git a/src/test/resources/Examples/eddsa-examples/eddsa-01.json b/src/test/resources/Examples/eddsa-examples/eddsa-01.json new file mode 100644 index 0000000..94615f1 --- /dev/null +++ b/src/test/resources/Examples/eddsa-examples/eddsa-01.json @@ -0,0 +1,40 @@ +{ + "title":"EdDSA-01: EdDSA - 25519", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "protected":{ + "ctyp":0 + }, + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA" + } + } + ] + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E617475726543A1030043A101274054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'A10300', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10127', {4: h'3131'}, h'77F3EACD11852C4BF9CB1D72FABE6B26FBA1D76092B2B5B7EC83B83557652264E69690DBC1172DDC0BF88411C0D25A507FDB247A20C40D5E245FABD3FC9EC106']]])", + "cbor":"D8628443A10300A054546869732069732074686520636F6E74656E742E818343A10127A104423131584077F3EACD11852C4BF9CB1D72FABE6B26FBA1D76092B2B5B7EC83B83557652264E69690DBC1172DDC0BF88411C0D25A507FDB247A20C40D5E245FABD3FC9EC106" + } +} diff --git a/src/test/resources/Examples/eddsa-examples/eddsa-02.json b/src/test/resources/Examples/eddsa-examples/eddsa-02.json new file mode 100644 index 0000000..9eac40c --- /dev/null +++ b/src/test/resources/Examples/eddsa-examples/eddsa-02.json @@ -0,0 +1,37 @@ +{ + "title":"EdDSA-02: EdDSA - 448", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "signers":[ + { + "key":{ + "kty":"OKP", + "kid":"ed448", + "crv":"Ed448", + "x_hex":"5fd7449b59b461fd2ce787ec616ad46a1da1342485a70e1f8a0ea75d80e96778edf124769b46c7061bd6783df1e50f6cd1fa1abeafe8256180", + "d_hex":"6c82a562cb808d10d632be89c8513ebf6c929f34ddfa8c9f63c9960ef6e348a3528c8a3fcc2f044e39a3fc5b94492f8f032e7549a20098f95b" + }, + "unprotected":{ + "kid":"ed448" + }, + "protected":{ + "alg":"EdDSA" + } + } + ] + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E61747572654043A101274054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10127', {4: h'6564343438'}, h'ABF04F4BC7DFACF70C20C34A3CFBD27719911DC8518B2D67BF6AF62895D0FA1E6A1CB8B47AD1297C0E9C34BEB34E50DFFEF14350EBD57842807D54914111150F698543B0A5E1DA1DB79632C6415CE18EF74EDAEA680B0C8881439D869171481D78E2F7D26340C293C2ECDED8DE1425851900']]])", + "cbor":"D8628440A054546869732069732074686520636F6E74656E742E818343A10127A1044565643434385872ABF04F4BC7DFACF70C20C34A3CFBD27719911DC8518B2D67BF6AF62895D0FA1E6A1CB8B47AD1297C0E9C34BEB34E50DFFEF14350EBD57842807D54914111150F698543B0A5E1DA1DB79632C6415CE18EF74EDAEA680B0C8881439D869171481D78E2F7D26340C293C2ECDED8DE1425851900" + } +} diff --git a/src/test/resources/Examples/eddsa-examples/eddsa-sig-01.json b/src/test/resources/Examples/eddsa-examples/eddsa-sig-01.json new file mode 100644 index 0000000..b7061c5 --- /dev/null +++ b/src/test/resources/Examples/eddsa-examples/eddsa-sig-01.json @@ -0,0 +1,31 @@ +{ + "title":"EdDSA-01: EdDSA - 25519 - sign0", + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"OKP", + "kid":"11", + "crv":"Ed25519", + "x_hex":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "d_hex":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"EdDSA", + "ctyp":0 + }, + "alg":"EdDSA" + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653145A2012703004054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"18([h'A201270300', {4: h'3131'}, h'546869732069732074686520636F6E74656E742E', h'7142FD2FF96D56DB85BEE905A76BA1D0B7321A95C8C4D3607C5781932B7AFB8711497DFA751BF40B58B3BCC32300B1487F3DB34085EEF013BF08F4A44D6FEF0D'])", + "cbor":"D28445A201270300A10442313154546869732069732074686520636F6E74656E742E58407142FD2FF96D56DB85BEE905A76BA1D0B7321A95C8C4D3607C5781932B7AFB8711497DFA751BF40B58B3BCC32300B1487F3DB34085EEF013BF08F4A44D6FEF0D" + } +} diff --git a/src/test/resources/Examples/eddsa-examples/eddsa-sig-02.json b/src/test/resources/Examples/eddsa-examples/eddsa-sig-02.json new file mode 100644 index 0000000..ee7d832 --- /dev/null +++ b/src/test/resources/Examples/eddsa-examples/eddsa-sig-02.json @@ -0,0 +1,30 @@ +{ + "title":"EdDSA-sig-02: EdDSA - 448 - sign1", + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"OKP", + "kid":"ed448", + "crv":"Ed448", + "x_hex":"5fd7449b59b461fd2ce787ec616ad46a1da1342485a70e1f8a0ea75d80e96778edf124769b46c7061bd6783df1e50f6cd1fa1abeafe8256180", + "d_hex":"6c82a562cb808d10d632be89c8513ebf6c929f34ddfa8c9f63c9960ef6e348a3528c8a3fcc2f044e39a3fc5b94492f8f032e7549a20098f95b" + }, + "unprotected":{ + "kid":"ed448" + }, + "protected":{ + "alg":"EdDSA" + }, + "alg":"EdDSA" + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653143A101274054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"18([h'A10127', {4: h'6564343438'}, h'546869732069732074686520636F6E74656E742E', h'988240A3A2F189BD486DE14AA77F54686C576A09F2E7ED9BAE910DF9139C2AC3BE7C27B7E10A20FA17C9D57D3510A2CF1F634BC0345AB9BE00849842171D1E9E98B2674C0E38BFCF6C557A1692B01B71015A47AC9F7748840CAD1DA80CBB5B349309FEBB912672B377C8B2072AF1598B3700'])", + "cbor":"D28443A10127A10445656434343854546869732069732074686520636F6E74656E742E5872988240A3A2F189BD486DE14AA77F54686C576A09F2E7ED9BAE910DF9139C2AC3BE7C27B7E10A20FA17C9D57D3510A2CF1F634BC0345AB9BE00849842171D1E9E98B2674C0E38BFCF6C557A1692B01B71015A47AC9F7748840CAD1DA80CBB5B349309FEBB912672B377C8B2072AF1598B3700" + } +} diff --git a/src/test/resources/Examples/encrypted-tests/aes-gcm-01.json b/src/test/resources/Examples/encrypted-tests/aes-gcm-01.json new file mode 100644 index 0000000..6fa15c1 --- /dev/null +++ b/src/test/resources/Examples/encrypted-tests/aes-gcm-01.json @@ -0,0 +1,40 @@ +{ + "title":"AES-GCM-01: Encryption example for spec - ", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743043A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"16([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A'])", + "cbor":"D08343A10101A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A" + } +} diff --git a/src/test/resources/Examples/encrypted-tests/enc-fail-01.json b/src/test/resources/Examples/encrypted-tests/enc-fail-01.json new file mode 100644 index 0000000..d69c29c --- /dev/null +++ b/src/test/resources/Examples/encrypted-tests/enc-fail-01.json @@ -0,0 +1,44 @@ +{ + "title":"env-fail-01: Failure tests", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "ChangeCBORTag":995 + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743043A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"995([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A'])", + "cbor":"D903E38343A10101A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A" + } +} diff --git a/src/test/resources/Examples/encrypted-tests/enc-fail-02.json b/src/test/resources/Examples/encrypted-tests/enc-fail-02.json new file mode 100644 index 0000000..b917419 --- /dev/null +++ b/src/test/resources/Examples/encrypted-tests/enc-fail-02.json @@ -0,0 +1,44 @@ +{ + "title":"env-fail-02: Failure tests", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "ChangeTag":1 + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743043A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"16([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250B'])", + "cbor":"D08343A10101A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250B" + } +} diff --git a/src/test/resources/Examples/encrypted-tests/enc-fail-03.json b/src/test/resources/Examples/encrypted-tests/enc-fail-03.json new file mode 100644 index 0000000..8a1e7a2 --- /dev/null +++ b/src/test/resources/Examples/encrypted-tests/enc-fail-03.json @@ -0,0 +1,46 @@ +{ + "title":"env-fail-03: Failure tests", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "ChangeAttr":{ + "alg":-999 + } + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743043A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"16([h'A1013903E6', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A'])", + "cbor":"D08345A1013903E6A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A" + } +} diff --git a/src/test/resources/Examples/encrypted-tests/enc-fail-04.json b/src/test/resources/Examples/encrypted-tests/enc-fail-04.json new file mode 100644 index 0000000..3e55690 --- /dev/null +++ b/src/test/resources/Examples/encrypted-tests/enc-fail-04.json @@ -0,0 +1,46 @@ +{ + "title":"env-fail-04: Failure tests", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "ChangeAttr":{ + "alg":"Unknown" + } + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743043A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"16([h'A10167556E6B6E6F776E', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A'])", + "cbor":"D0834AA10167556E6B6E6F776EA1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A" + } +} diff --git a/src/test/resources/Examples/encrypted-tests/enc-fail-06.json b/src/test/resources/Examples/encrypted-tests/enc-fail-06.json new file mode 100644 index 0000000..1ff389b --- /dev/null +++ b/src/test/resources/Examples/encrypted-tests/enc-fail-06.json @@ -0,0 +1,46 @@ +{ + "title":"env-fail-06: Failure tests", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "AddProtected":{ + "ctyp":0 + } + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743043A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"16([h'A201010300', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A'])", + "cbor":"D08345A201010300A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B162E2C03568B41F57C3CC16F9166250A" + } +} diff --git a/src/test/resources/Examples/encrypted-tests/enc-fail-07.json b/src/test/resources/Examples/encrypted-tests/enc-fail-07.json new file mode 100644 index 0000000..e5c8702 --- /dev/null +++ b/src/test/resources/Examples/encrypted-tests/enc-fail-07.json @@ -0,0 +1,47 @@ +{ + "title":"env-fail-07: Failure tests", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"A128GCM", + "ctyp":0 + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "RemoveProtected":{ + "ctyp":0 + } + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743045A20101030040", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"16([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B555CDB505738821CDB1EC4D9261DC123'])", + "cbor":"D08343A10101A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B555CDB505738821CDB1EC4D9261DC123" + } +} diff --git a/src/test/resources/Examples/encrypted-tests/enc-pass-01.json b/src/test/resources/Examples/encrypted-tests/enc-pass-01.json new file mode 100644 index 0000000..23263d2 --- /dev/null +++ b/src/test/resources/Examples/encrypted-tests/enc-pass-01.json @@ -0,0 +1,43 @@ +{ + "title":"env-pass-01: Failure tests", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "unprotected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "ChangeProtected":"a0" + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E6372797074304040", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"16([h'A0', {1: 1, 5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B24BEE54AA5D797C8DC845929ACAA47EF'])", + "cbor":"D08341A0A20101054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B24BEE54AA5D797C8DC845929ACAA47EF" + } +} diff --git a/src/test/resources/Examples/encrypted-tests/enc-pass-02.json b/src/test/resources/Examples/encrypted-tests/enc-pass-02.json new file mode 100644 index 0000000..a549542 --- /dev/null +++ b/src/test/resources/Examples/encrypted-tests/enc-pass-02.json @@ -0,0 +1,41 @@ +{ + "title":"enc-pass-02: Add external data", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "protected":{ + "alg":"A128GCM" + }, + "external":"0011bbcc22dd4455dd220099", + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E63727970743043A101014C0011BBCC22DD4455DD220099", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"16([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B1DC3A143880CA2883A5630DA08AE1E6E'])", + "cbor":"D08343A10101A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B1DC3A143880CA2883A5630DA08AE1E6E" + } +} diff --git a/src/test/resources/Examples/encrypted-tests/enc-pass-03.json b/src/test/resources/Examples/encrypted-tests/enc-pass-03.json new file mode 100644 index 0000000..2b08d5e --- /dev/null +++ b/src/test/resources/Examples/encrypted-tests/enc-pass-03.json @@ -0,0 +1,43 @@ +{ + "title":"enc-pass-03: Remove leading CBOR tag", + "input":{ + "plaintext":"This is the content.", + "encrypted":{ + "unprotected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "RemoveCBORTag":1 + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8368456E6372797074304040", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"[h'', {1: 1, 5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B24BEE54AA5D797C8DC845929ACAA47EF']", + "cbor":"8340A20101054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B24BEE54AA5D797C8DC845929ACAA47EF" + } +} diff --git a/src/test/resources/Examples/enveloped-tests/aes-gcm-01.json b/src/test/resources/Examples/enveloped-tests/aes-gcm-01.json new file mode 100644 index 0000000..55e6ce3 --- /dev/null +++ b/src/test/resources/Examples/enveloped-tests/aes-gcm-01.json @@ -0,0 +1,40 @@ +{ + "title":"AES-GCM-01: Encryption example for spec - ", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/enveloped-tests/env-fail-01.json b/src/test/resources/Examples/enveloped-tests/env-fail-01.json new file mode 100644 index 0000000..a10f20c --- /dev/null +++ b/src/test/resources/Examples/enveloped-tests/env-fail-01.json @@ -0,0 +1,44 @@ +{ + "title":"env-fail-01: Failure tests", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "ChangeCBORTag":995 + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"995([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D903E38443A10101A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/enveloped-tests/env-fail-02.json b/src/test/resources/Examples/enveloped-tests/env-fail-02.json new file mode 100644 index 0000000..af318b6 --- /dev/null +++ b/src/test/resources/Examples/enveloped-tests/env-fail-02.json @@ -0,0 +1,44 @@ +{ + "title":"env-fail-02: Failure tests", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "ChangeTag":1 + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FD', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FD818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/enveloped-tests/env-fail-03.json b/src/test/resources/Examples/enveloped-tests/env-fail-03.json new file mode 100644 index 0000000..b3a8b5d --- /dev/null +++ b/src/test/resources/Examples/enveloped-tests/env-fail-03.json @@ -0,0 +1,46 @@ +{ + "title":"env-fail-03: Failure tests", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "ChangeAttr":{ + "alg":-999 + } + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1013903E6', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608445A1013903E6A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/enveloped-tests/env-fail-04.json b/src/test/resources/Examples/enveloped-tests/env-fail-04.json new file mode 100644 index 0000000..bdd6c21 --- /dev/null +++ b/src/test/resources/Examples/enveloped-tests/env-fail-04.json @@ -0,0 +1,46 @@ +{ + "title":"env-fail-04: Failure tests", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "ChangeAttr":{ + "alg":"Unknown" + } + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10167556E6B6E6F776E', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D860844AA10167556E6B6E6F776EA1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/enveloped-tests/env-fail-06.json b/src/test/resources/Examples/enveloped-tests/env-fail-06.json new file mode 100644 index 0000000..af996d3 --- /dev/null +++ b/src/test/resources/Examples/enveloped-tests/env-fail-06.json @@ -0,0 +1,46 @@ +{ + "title":"env-fail-06: Failure tests", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "AddProtected":{ + "ctyp":0 + } + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"96([h'A201010300', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608445A201010300A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B3581F2C80039826350B97AE2300E42FC818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/enveloped-tests/env-fail-07.json b/src/test/resources/Examples/enveloped-tests/env-fail-07.json new file mode 100644 index 0000000..90c6601 --- /dev/null +++ b/src/test/resources/Examples/enveloped-tests/env-fail-07.json @@ -0,0 +1,47 @@ +{ + "title":"env-fail-07: Failure tests", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM", + "ctyp":0 + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "RemoveProtected":{ + "ctyp":0 + } + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707445A20101030040", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B98E0ECBC8D6A3E633B4D43543C7AB550', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B98E0ECBC8D6A3E633B4D43543C7AB550818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/enveloped-tests/env-pass-01.json b/src/test/resources/Examples/enveloped-tests/env-pass-01.json new file mode 100644 index 0000000..5975c3c --- /dev/null +++ b/src/test/resources/Examples/enveloped-tests/env-pass-01.json @@ -0,0 +1,43 @@ +{ + "title":"env-pass-01: Failure tests", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "unprotected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "ChangeProtected":"a0" + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E63727970744040", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"96([h'A0', {1: 1, 5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B9874993C63B0382A855573F0990CD18E', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608441A0A20101054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B9874993C63B0382A855573F0990CD18E818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/enveloped-tests/env-pass-02.json b/src/test/resources/Examples/enveloped-tests/env-pass-02.json new file mode 100644 index 0000000..6e16cd1 --- /dev/null +++ b/src/test/resources/Examples/enveloped-tests/env-pass-02.json @@ -0,0 +1,41 @@ +{ + "title":"env-pass-02: Add external data", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "external":"0011bbcc22dd4455dd220099", + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A101014C0011BBCC22DD4455DD220099", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B7CDE42D4F7E6DD896E231C71FDD6FC99', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A10101A1054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B7CDE42D4F7E6DD896E231C71FDD6FC99818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/enveloped-tests/env-pass-03.json b/src/test/resources/Examples/enveloped-tests/env-pass-03.json new file mode 100644 index 0000000..a4b78bb --- /dev/null +++ b/src/test/resources/Examples/enveloped-tests/env-pass-03.json @@ -0,0 +1,43 @@ +{ + "title":"env-pass-03: Remove leading CBOR tag", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "unprotected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + } + } + ] + }, + "failures":{ + "RemoveCBORTag":1 + }, + "rng_stream":[ + "02D1F7E6F26C43D4868D87CE" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E63727970744040", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"[h'', {1: 1, 5: h'02D1F7E6F26C43D4868D87CE'}, h'60973A94BB2898009EE52ECFD9AB1DD25867374B9874993C63B0382A855573F0990CD18E', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]]", + "cbor":"8440A20101054C02D1F7E6F26C43D4868D87CE582460973A94BB2898009EE52ECFD9AB1DD25867374B9874993C63B0382A855573F0990CD18E818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/examples.cddl b/src/test/resources/Examples/examples.cddl new file mode 100644 index 0000000..2f6cb8b --- /dev/null +++ b/src/test/resources/Examples/examples.cddl @@ -0,0 +1,107 @@ +Example = { + title: tstr, # summary of test + ? description: tstr, # longer description of test + ? fail : bool, # Is this a success or failure test + input: Inputs, # Inputs to create the test + ? intermediates : Intermediates, # Intermediate values for debugging + output: Outputs # Outputs of the test +} + +Inputs = { + plaintext: bstr / tstr, + ? detached: bool, + (enveloped: Enveloped) / # Create an enveloped Message + (encrypt: Encrypt) / # Create an encrypt Message + (mac: Mac) / # Create a MAC message + (mac0: Mac0) / # Craete a MAC0 message + (sign: Sign), + ? failures : FailureSet, # Description of failure changes applied + ? rng_description : tstr, # What is what in the RNG stream + ? rng_stream: [+ tstr] # Random number generator stream - encoded as hex +} + +Sign = { + signers: [+ Signers] +} + +headers = ( + ? protected: { +header_items }, # Protected headers to be sent + ? unprotected: { +header_items }, # Unprotected headers to be sent + ? unsent: { +header_items } # Headers not to be sent +} + +header_items = ( + "alg" : tstr, # Algorithm parameter + "kid" : tstr, # key identifier - cast to bstr + "kid_hex" : tstr, # key identifier - encoded as hex + "epk" : key, # ephemeral key + "spk" : key, # static key + "spk_kid" : tstr, # static key identifier - cast to bstr + "spk_kid_hex" : tstr, # static key identifier - encoded as hex + "apu_id" : tstr, # PartyU identifier - cast to bstr + "apu_nonce_hex" : tstr, # PartyU nonce - encoded as hex + "apv_id" : tstr, # PartyV identifier - cast to bstr + "pub_other" : tstr, # Public other Info - cast to bstr + "salt" : tstr, # Salt value - cast to bstr +) + +Signers = { + alg: tstr, + key: Key, + headers +} + +Mac = { + alg: tstr, + headers, + recipients: [+ Recipients] +} + +Mac0 = { + alg: tstr, + headers +} + +Encrypt = { + alg: tstr, + headers +} + +Enveloped = { + alg: tstr, + headers, + recipients: [+ Recipients] +} + +Recipient = { + alg: tstr, + ? fail: bool, # does this recipient fail + headers, # Headers for the recipient + key: Key, # Recipient Key + ? sender_key: Key, # Sender key + failures: Failures # Set of failures to apply to recipient +} + +Key = { + (tstr/int) => * +} + +Failures = { +} + +Outputs = { + ? cbor: bstr, # CBOR encoding in HEX + ? cbor_diag: tstr, # CBOR Diagnositc encoding + ? content : bstr # deatched content encoded in HEX +} + +Intermediates = { + ? "ToMax_hex": tstr, # Value to be MAC-ed encoded in HEX + ? "CEK_hex": tstr, # CEK used in MAC or encryption encoded in hex + ? "AAD_hex": tstr, # AEAD Additional Data encoded in hex + ? "recipients" : [ +{ + ? "Context_hex": tstr, # Context structure encoded in hex + ? "Secret_hex" : tstr, # ECDH shared secret encoded in hex + }] + ] +} diff --git a/src/test/resources/Examples/hashsig/hashsig-01.json b/src/test/resources/Examples/hashsig/hashsig-01.json new file mode 100644 index 0000000..80a4678 --- /dev/null +++ b/src/test/resources/Examples/hashsig/hashsig-01.json @@ -0,0 +1,43 @@ +{ + "title":"HSS LMS Hash based signature - hsssig-01", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "protected":{ + "ctyp":0 + }, + "signers":[ + { + "key":{ + "kty":"HSS-LMS", + "kid":"ItsBig", + "comment":"1 level key - LM_SHA256_MD32_H10 + LMOTS_SHA256_N32_W4 ", + "public":"000000010000000600000003d08fabd4a2091ff0a8cb4ed834e7453432a58885cd9ba0431235466bff9651c6c92124404d45fa53cf161c28f1ad5a8e", + "private":"1|6|3|558B8966C48AE9CB898B423C83443AAE014A72F1B1AB5CC85CF1D892903B5439|1|d08fabd4a2091ff0a8cb4ed834e74534" + }, + "unprotected":{ + "kid":"ItsBig" + }, + "protected":{ + "alg":"HSS-LMS" + } + } + ] + }, + "rng_description":"Random value for signature", + "rng_stream":[ + "ACFC5C7377D45C969DF7D7289882A48C1A10E5C48B6E29DF5018D3E683E36BC5" + ] + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E617475726543A1030044A101382D4054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'A10300', {}, h'546869732069732074686520636F6E74656E742E', [[h'A101382D', {4: h'497473426967'}, h'00000000000000010000000391291DE76CE6E24D1E2A9B60266519BC8CE889F814DEB0FC00EDD3129DE3AB9B6BFA3BF47D007D844AF7DB749EA97215E82F456CBDD473812C6A042AE39539898752C89B60A276EC8A9FEAB900E25BDFE0AB8E773AA1C36AE214D67C65BB68630450A5DB2C7C6403B77F6A9BF4D30A0219DB5CCED884D7514F3CBD19220020BF3045B0E5C6955B32864F16F97DA02F0CBFEA70458B07032E30B0342D75B8F3DC6871442E6384B10F559F5DC594A214924C48CCC337078665653FC740340428138B0FB5154F2F2CB291AD05ACE7ACAE60031B2D09B2F417712D1C01E34B165AF2E070F5A521A85A5FB3DD2A6288947BCBD5E2265D3670BD6192EB2BF643964E2783D84AEC343F8E3571E4FCF09CBEEA94E80470AA7252D1C733A5535907E66C7B9F0B88B159DC2A7370EE47F13E7E134D3D05E5F53FAC640B784A9B0F183FE14217325626F487CC8D8CB9EAF0ABB174EE0B7076CF39C45037CEFDF3F1E61B5174581214C09870B72C39737EC4C46A96199B66CAD2990BCBE5BB1ABFDE99107C7F7289395BF2A433598EDE0B1969F23DB949AFB5B4D33831DAE6C641A6355F8F9BF16CDFFC4BF86891B93A557C2152AC8A1DE51C995344CC10CC4BC9ECFBB4E418BED0F334AF165339E6725DC4FC1E995521E1BE8A566D59B57CD130903B42D07087D63646EF8FC1E9E9071BB67A123FDEC3F37638CDAF0F4BF3084074069171C17885B9431AD908D36A6F8A826256D2AA34F8AA0731A357C060DB8E80FEFD61B1C323890E640633B98D175D4D6EBFF800A71CFC864EC02837DE9D0E079F0F400ACAFD56805CB273E631BA395D23E86ACF6EAE63181A5AFE1F0A361CBBD5FEFEB7DB0C95591EC3128E80DFBEA9CA0F89FC035D761C05D41E7A010892C42E8E2AF62AA604F4E214C0BB08075481F9CC307A555ADF333B9424F209B89F161032E413B047AE5AB0AA15643BB4C643446D2C9829EB256E7375CE9639047A24A44F4DA446B7359556F3AB3484C56511C68A140DC0531F653105800D9F20990D4EBDC5CEEA918D7AE95C0D7EC69A00D6A936B25FC19B9DFC5561400F046191136C367038D6A9D0E0AE30DCDC4733712CBD5A2AEE35315EFF5C1A7E085B68C5CF0C64C495DF2CA6F030DB04480A2E11D4A0A0DBF29D9463D5B9E41E346E49C894D5E43993C834C4746309C886D6131F2F92155CA1160BAC9660802A947B5ABA94B35357D13FDF02D2AEABEF568912F68AE5D3A60214F6D00C4DD9F0AF09EB0BF961CD9F27251D46899C28D87080BA2EAD3E8193F51A789706EC32AACEE9F4B14EECA91A252FE894B30DC3938ABBBE7D217948CAE79CE3ADB4D7D7DF6756F3099F2543ED3B522BACAB257503C9E07FCD32CC32FA9AA17977EC05BC5FE0F5954D51F160F52D33F93166AF68AA90261B3F5AD273ADACF2D0CB5B0C5402BFA62DA67A52DCDDFA463E72D2C005F1AC0EA3CB62364EE3419333612E07BF685006137A592E2FCD58398265C4FF9E11E70C2B79152E4604B4F94676E955BCFF4DFC429A8A88728B95BFC2826E25BA6EAB9CFB066C9911693EFFF242F7B51C3CB88546143B8AB2142DD3C9BDA55D16FE3084A86B743F294DD9D0AA84F3CE3B083A5879A4762A756E9B41F4BDF8B71418073B0A0D4A9C131882455ECE23E50324C5FEEA217920B0F3109DCBDC81762E41B7CA271EFAC8E39CC26EBE085ABDBF6B314A38929799FB7FEEBEE2E20B97056ED17EF3881E6E89330314DD7E9C629C46DFDB925C7C5F5D243F159D964691745CD46579FD0696479E1C49CBD2AF879A2BCE8576619CCA7B6E516E6C94C1087441A81F11B9A83535B24DDC725A81A9D1FF62DA2804C8D84C6E382065574282EA1F23EAF648CFA9767AFB098FD81654D76133F5F39BCC762C9BC31F7F4665CC0EFA929B5C05DEDD76143C63DC7018AB130C108EA901BE32B9D911B66DA13A1528C32A9694C899A772F8E1FE00C17ECEB343E737D72CBA06CF5DDAC9A4D3DF7EF391CF6595A6D8C14B0D80F93023B1B3D4371239DA98B67A1B6A379422616282A16E8D1F97A130BAF21E572BCCA91ABB760EAC6957F9B1B05E49E2D181874AC6DD160D1C717B73BD28EF55F08D47466D5AEF754814C7E206FA9E2EC53385D14D52F7769D95EA50524FFB20DC7275B04D71D1967E3BBC6ED481F1FC5A15E78A1FD967D96045625645DBD173CCCDD97661E995CE47D6B3EAD96EE6D006A5CE6F4C9777FE2E3F91BEBE877CAC8C6486DFCE0315DC71BBB93879759B8981C5FF2E11DEB809ABF4280EE93D1711E73645B410ACB518538CE3D4BDA1E355C988F068165668E99D6A8DE356B4B13298036AD05D526C4A5E2591612A477B7E86550ADDE128CD71EE651D4499699000A02979E42BBCCF32C83B1EB0FF99AA4D352E20E0B3382422DF2C2ED4CE90C94CF1A359E92EF971DC6DB06047A333C2EBE827EB6D5F2811FDBE0BF0F12BF2094E0DCD8E418F3F691A60CEB0CEFB6F45F47883D6B9F320950E91266740C6DBFAD6B3CFE56DE0AA6658B0DC893BB6E49E6294537A7878E86CFC8E6C150675DB1A89D188EA6EFE7D88FF57B39B8610E392811EE097CA61C4841E0FBD346ED3FF6A5E412ACB0D9F13022DF2E7FDAA8E0FACE7366C8FFE6F446995B564FC3D59C70FECDB60A25E28650417157F43F3E72C3AFC601509641CFD099A78130E1F7BA8333502AD4F036F46411A43D035E2CA0ED0C346D9AAC5DF05196C95C38E6E52763ED896B6D02464A910DDA6CCA34024E3B9C3723D26E2886AD724DD56EA285E8E4B60BEEC924D55DD700C38877B74552FEA1F8741579B02061416131DB390F628522885236B51F7AEF23167D3A5FE5EADCD88B0E99B2B6BC56B0DEA4FB22146294766C28E5E7C834DBDCB6BFDD7BD8455252522FF2E974F6FD3FDA176749B7CDCED5B9ABA092B2982C89CB7D2B36348928C8F01170618ECFF14D9E0EED9D88D97E38BCF7A837F674BE5243FC624C8AFD3D105F462BFA939B8143A3A98F78FBB8C915E00BDBBF707B12C45784F4D1CB1426B583A0D5FBEC1F5EA6D0067C090168CB788E532ACA770C7BE366EC07E7808F1892B00000006ED1CE8C6E437918D43FBA7BD9385694C41182703F6B7F704DEEDD9384BA6F8BC362C948646B3C9848803E6D9BA1F7D3967F709CDDD35DC77D60356F0C36808900B491CB4ECBBABEC128E7C81A46E62A67B57640A0A78BE1CBF7DD9D419A10CD8686D16621A80816BFDB5BDC56211D72CA70B81F1117D129529A7570CF79CF52A7028A48538ECDD3B38D3D5D62D26246595C4FB73A525A5ED2C30524EBB1D8CC82E0C19BC4977C6898FF95FD3D310B0BAE71696CEF93C6A552456BF96E9D075E383BB7543C675842BAFBFC7CDB88483B3276C29D4F0A341C2D406E40D4653B7E4D045851ACF6A0A0EA9C710B805CCED4635EE8C107362F0FC8D80C14D0AC49C516703D26D14752F34C1C0D2C4247581C18C2CF4DE48E9CE949BE7C888E9CAEBE4A415E291FD107D21DC1F084B1158208249F28F4F7C7E931BA7B3BD0D824A4570']]])", + "cbor":"D8628443A10300A054546869732069732074686520636F6E74656E742E818344A101382DA104464974734269675909D000000000000000010000000391291DE76CE6E24D1E2A9B60266519BC8CE889F814DEB0FC00EDD3129DE3AB9B6BFA3BF47D007D844AF7DB749EA97215E82F456CBDD473812C6A042AE39539898752C89B60A276EC8A9FEAB900E25BDFE0AB8E773AA1C36AE214D67C65BB68630450A5DB2C7C6403B77F6A9BF4D30A0219DB5CCED884D7514F3CBD19220020BF3045B0E5C6955B32864F16F97DA02F0CBFEA70458B07032E30B0342D75B8F3DC6871442E6384B10F559F5DC594A214924C48CCC337078665653FC740340428138B0FB5154F2F2CB291AD05ACE7ACAE60031B2D09B2F417712D1C01E34B165AF2E070F5A521A85A5FB3DD2A6288947BCBD5E2265D3670BD6192EB2BF643964E2783D84AEC343F8E3571E4FCF09CBEEA94E80470AA7252D1C733A5535907E66C7B9F0B88B159DC2A7370EE47F13E7E134D3D05E5F53FAC640B784A9B0F183FE14217325626F487CC8D8CB9EAF0ABB174EE0B7076CF39C45037CEFDF3F1E61B5174581214C09870B72C39737EC4C46A96199B66CAD2990BCBE5BB1ABFDE99107C7F7289395BF2A433598EDE0B1969F23DB949AFB5B4D33831DAE6C641A6355F8F9BF16CDFFC4BF86891B93A557C2152AC8A1DE51C995344CC10CC4BC9ECFBB4E418BED0F334AF165339E6725DC4FC1E995521E1BE8A566D59B57CD130903B42D07087D63646EF8FC1E9E9071BB67A123FDEC3F37638CDAF0F4BF3084074069171C17885B9431AD908D36A6F8A826256D2AA34F8AA0731A357C060DB8E80FEFD61B1C323890E640633B98D175D4D6EBFF800A71CFC864EC02837DE9D0E079F0F400ACAFD56805CB273E631BA395D23E86ACF6EAE63181A5AFE1F0A361CBBD5FEFEB7DB0C95591EC3128E80DFBEA9CA0F89FC035D761C05D41E7A010892C42E8E2AF62AA604F4E214C0BB08075481F9CC307A555ADF333B9424F209B89F161032E413B047AE5AB0AA15643BB4C643446D2C9829EB256E7375CE9639047A24A44F4DA446B7359556F3AB3484C56511C68A140DC0531F653105800D9F20990D4EBDC5CEEA918D7AE95C0D7EC69A00D6A936B25FC19B9DFC5561400F046191136C367038D6A9D0E0AE30DCDC4733712CBD5A2AEE35315EFF5C1A7E085B68C5CF0C64C495DF2CA6F030DB04480A2E11D4A0A0DBF29D9463D5B9E41E346E49C894D5E43993C834C4746309C886D6131F2F92155CA1160BAC9660802A947B5ABA94B35357D13FDF02D2AEABEF568912F68AE5D3A60214F6D00C4DD9F0AF09EB0BF961CD9F27251D46899C28D87080BA2EAD3E8193F51A789706EC32AACEE9F4B14EECA91A252FE894B30DC3938ABBBE7D217948CAE79CE3ADB4D7D7DF6756F3099F2543ED3B522BACAB257503C9E07FCD32CC32FA9AA17977EC05BC5FE0F5954D51F160F52D33F93166AF68AA90261B3F5AD273ADACF2D0CB5B0C5402BFA62DA67A52DCDDFA463E72D2C005F1AC0EA3CB62364EE3419333612E07BF685006137A592E2FCD58398265C4FF9E11E70C2B79152E4604B4F94676E955BCFF4DFC429A8A88728B95BFC2826E25BA6EAB9CFB066C9911693EFFF242F7B51C3CB88546143B8AB2142DD3C9BDA55D16FE3084A86B743F294DD9D0AA84F3CE3B083A5879A4762A756E9B41F4BDF8B71418073B0A0D4A9C131882455ECE23E50324C5FEEA217920B0F3109DCBDC81762E41B7CA271EFAC8E39CC26EBE085ABDBF6B314A38929799FB7FEEBEE2E20B97056ED17EF3881E6E89330314DD7E9C629C46DFDB925C7C5F5D243F159D964691745CD46579FD0696479E1C49CBD2AF879A2BCE8576619CCA7B6E516E6C94C1087441A81F11B9A83535B24DDC725A81A9D1FF62DA2804C8D84C6E382065574282EA1F23EAF648CFA9767AFB098FD81654D76133F5F39BCC762C9BC31F7F4665CC0EFA929B5C05DEDD76143C63DC7018AB130C108EA901BE32B9D911B66DA13A1528C32A9694C899A772F8E1FE00C17ECEB343E737D72CBA06CF5DDAC9A4D3DF7EF391CF6595A6D8C14B0D80F93023B1B3D4371239DA98B67A1B6A379422616282A16E8D1F97A130BAF21E572BCCA91ABB760EAC6957F9B1B05E49E2D181874AC6DD160D1C717B73BD28EF55F08D47466D5AEF754814C7E206FA9E2EC53385D14D52F7769D95EA50524FFB20DC7275B04D71D1967E3BBC6ED481F1FC5A15E78A1FD967D96045625645DBD173CCCDD97661E995CE47D6B3EAD96EE6D006A5CE6F4C9777FE2E3F91BEBE877CAC8C6486DFCE0315DC71BBB93879759B8981C5FF2E11DEB809ABF4280EE93D1711E73645B410ACB518538CE3D4BDA1E355C988F068165668E99D6A8DE356B4B13298036AD05D526C4A5E2591612A477B7E86550ADDE128CD71EE651D4499699000A02979E42BBCCF32C83B1EB0FF99AA4D352E20E0B3382422DF2C2ED4CE90C94CF1A359E92EF971DC6DB06047A333C2EBE827EB6D5F2811FDBE0BF0F12BF2094E0DCD8E418F3F691A60CEB0CEFB6F45F47883D6B9F320950E91266740C6DBFAD6B3CFE56DE0AA6658B0DC893BB6E49E6294537A7878E86CFC8E6C150675DB1A89D188EA6EFE7D88FF57B39B8610E392811EE097CA61C4841E0FBD346ED3FF6A5E412ACB0D9F13022DF2E7FDAA8E0FACE7366C8FFE6F446995B564FC3D59C70FECDB60A25E28650417157F43F3E72C3AFC601509641CFD099A78130E1F7BA8333502AD4F036F46411A43D035E2CA0ED0C346D9AAC5DF05196C95C38E6E52763ED896B6D02464A910DDA6CCA34024E3B9C3723D26E2886AD724DD56EA285E8E4B60BEEC924D55DD700C38877B74552FEA1F8741579B02061416131DB390F628522885236B51F7AEF23167D3A5FE5EADCD88B0E99B2B6BC56B0DEA4FB22146294766C28E5E7C834DBDCB6BFDD7BD8455252522FF2E974F6FD3FDA176749B7CDCED5B9ABA092B2982C89CB7D2B36348928C8F01170618ECFF14D9E0EED9D88D97E38BCF7A837F674BE5243FC624C8AFD3D105F462BFA939B8143A3A98F78FBB8C915E00BDBBF707B12C45784F4D1CB1426B583A0D5FBEC1F5EA6D0067C090168CB788E532ACA770C7BE366EC07E7808F1892B00000006ED1CE8C6E437918D43FBA7BD9385694C41182703F6B7F704DEEDD9384BA6F8BC362C948646B3C9848803E6D9BA1F7D3967F709CDDD35DC77D60356F0C36808900B491CB4ECBBABEC128E7C81A46E62A67B57640A0A78BE1CBF7DD9D419A10CD8686D16621A80816BFDB5BDC56211D72CA70B81F1117D129529A7570CF79CF52A7028A48538ECDD3B38D3D5D62D26246595C4FB73A525A5ED2C30524EBB1D8CC82E0C19BC4977C6898FF95FD3D310B0BAE71696CEF93C6A552456BF96E9D075E383BB7543C675842BAFBFC7CDB88483B3276C29D4F0A341C2D406E40D4653B7E4D045851ACF6A0A0EA9C710B805CCED4635EE8C107362F0FC8D80C14D0AC49C516703D26D14752F34C1C0D2C4247581C18C2CF4DE48E9CE949BE7C888E9CAEBE4A415E291FD107D21DC1F084B1158208249F28F4F7C7E931BA7B3BD0D824A4570" + } +} diff --git a/src/test/resources/Examples/hashsig/hsssig-sig-01.json b/src/test/resources/Examples/hashsig/hsssig-sig-01.json new file mode 100644 index 0000000..f8000b0 --- /dev/null +++ b/src/test/resources/Examples/hashsig/hsssig-sig-01.json @@ -0,0 +1,33 @@ +{ + "title":"HSS LMS Hash based signature - hsssig-sig-01", + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"HSS-LMS", + "kid":"ItsBig", + "comment":"1 level key - LM_SHA256_MD32_H10 + LMOTS_SHA256_N32_W4 ", + "public":"000000010000000600000003d08fabd4a2091ff0a8cb4ed834e7453432a58885cd9ba0431235466bff9651c6c92124404d45fa53cf161c28f1ad5a8e", + "private":"1|6|3|558B8966C48AE9CB898B423C83443AAE014A72F1B1AB5CC85CF1D892903B5439|0|d08fabd4a2091ff0a8cb4ed834e74534" + }, + "unprotected":{ + "kid":"ItsBig" + }, + "protected":{ + "alg":"HSS-LMS" + }, + "alg":"HSS-LMS" + }, + "rng_description":"Random value for signature", + "rng_stream":[ + "1D5112D38A1146402875B73BC8D4B59C845C6AE61D03A70ABAD098AC05AD8297" + ] + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653144A101382D4054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"18([h'A101382D', {4: h'497473426967'}, h'546869732069732074686520636F6E74656E742E', h'00000000000000000000000391291DE76CE6E24D1E2A9B60266519BC8CE889F814DEB0FC00EDD3129DE3AB9B9AA5B5AC783BDF0FE689F57FB204F1992DBC1CE2484F316C74BCE3F2094CFA8E96A4A9548CEAD0F78EE5D549510D1910F647320448AE27ECCE77249802A0C39C645BF8DB08573AF52C93D91FD0E217F245C752C176B81514EB6E3067E0FBB329225EAA88C7D21635E32AE84213F89018CB06F1B84E61EAC348B690D7C6265C19F9D868952D99826AECD417B5279DD674CD951C306016CFEE4FEE3BFCF5EE5A5AD08B5B4F53BC93995F26CFE7C0C1C5BA2574C1F2D8470993E8BD47EF9B9CF309EF895226E92BE60683459009611DEFBB9A43217956A0AB2959BBDA0FECA39DE37E7C4A6CD8A5314D6B02B377406D5A5E589E91FEAA9F2E4EC1682BA1F633C7784499323E40DA651F71D3C19E38C634D898B0C508324C0BFCF7C5F0A8C014B4AF200A739F96CDDBA94DAF86CE80C76158D4F5CF3CD2BA9F1393DF47E556887F9168540485242A05EC6BCC76659EC3D0D2FEDAE3FD1608A701C226F5FD83C9B1ED3152DDAC7426C30E3390BEC8F1DA6174ABE8D3568C9B76B149EB077D61AC15B8FB11B8CE5F9D14E448E216F375E1F96A52D39619459B131026143E8809BAD408F5EF66CD3DA227431E68670C0B4B2C3801E1E9025B1EBED218E0956967158CCC274C704ADCD8CC23C149A89EDA25478742DADC15F233844535E4021000B5D557313D4F271875680E6D5E7F6681FDD19F8B9A748CABB2377AAC1387FDB80E618EB7D69A368729CA9A092AF91EBE1C584C35FE62734D1D53D10B35DD02093A201C889AD37A558B610F1AB00179A11F881600E944CEDC47A7AE6D828009D7C61FFEA9DD5AA5406408E2E85DC056E47B57589EABA18E792F4631AF62D4588A1818167274273C69E7A0735BE5DADA7E224E3B178B3B093212EB74E762F564A26D577AA22EBD8C7B4A999419908E2F2D9C8689DC923905C198B9EE335D1E0DE6D689655F446DFFEA997B6E58F5F648415233EDE3B9D8A2DB29E8C3DDE5D8DBD55E6348CD9F421783DB090E087DE46425D62D513597B00D7DE32FAD87752A79CEE8B2A38B1E0F2562836721CBBFBA20F131130C009A436B93A0BB44FCBB86228B1BF1A35F4FC626817924EAEBD5B78D64A7970D18DADE90CF0AD759B1C45D953C08CD1189685077C5A56069DA0944669D797496F8F886FEA6F792598DB2AC66B657AF838ED3C3A914DFFBB164170A1F63250B125EDA53ECAEAF6EE0D2B8A3C804104D7ED575B66469BC59F37EEC6C6F6FB19E0F7EA02D7C85306230063ADB58950589F6FFAFF1407233828AE0DFBE5889E5DE00BB640A4BC24C3F704488FA669676A9EBBBED399B8A9AC0EE4CC944F864B21F642E04F610319AC9271F8BD820E77E41DAC6553D234D9480E26142C0FA37416651D6450E1F2082BD0213D6783E1AE3CC5C5AF677C3316E173BA4716D6BC8A9D89383F8B025A0859B99A43DAEAF8DDAED46D223B9B503651A67560BFEB2F35BA544722620EC4086DCC77E6E87BB53F1F18C38368662BE460EDE31325CAEAEBF018A6FA9D32E3C3A6898E15FE114DCCE51241C61AFABC36DE3608B4D342712A833615C6131E89E1D46B713D9638A08B5A768D53AF0298B9C874DED7084358223840C2E78CD6FBFCA695279A4C1883BB7DE81B04A069DE8277F7F5109C16938347A643713C9AC36FFFC8BF141E899F48BC25C7B636D43BEBCFA7742D4E1462263E56732AD2021EEF8CE84023C4959CFD250343D62074724907DE9D49EA2F6C968FD9E9BF28FEAFCDC81702108805DEC60F2781272D2425A6EE29C66122D2C557867C1A5AED82131E06FC384ECF49017E1C9D6CF63B9F2285CCF890CBB9BBF796E0FD02101948B7EF6638493677B33FD787D9D3FC2C7CC7BABC21AF8C748AFB80CF86B45DC89F0B9C7959621E85B98B542DC263DB9255273BB9054A7F194748F28373BA123D73FC71FEF43E7E2AC9A80008E85CF2F04AA433075DFC54C4DE24A341EBF7CF1E6B383DBBA85898FDC368017FD67C153E7A991A3A3CEE6DAE4FBE2FE6F25A8DF314140A8176C8E6FD0C6F042CA66EB6ABBA9A2502BB6DFA52960AE86A942A673E4E45439594FEFCD2974E20554D1DC70B8E034FD1787801343D5F6EDC95CE0348C25727C771526E3FD4EFFB5F16E25A1EA3DCD8282E778E91AE9B339A5013C77FD6EA2432704E293F5E82A24121C73900BEA4B4EF14A2ADC1AB3C68224BAE1DE9C61A48B84E84C1B0E83701BE3D988012A24FA40268C8D6EF1FD2818AE8E4B6F52F89BEAB6BFDD1FF1B7ECD573EDFF3703B800B5B2A206F451F1BF2713B4AE9085BD7FE34AD4306A290E4CDB7817EE9AB7CCFB816D002B619F77D46D7DD0F8EEFE10F5C0F9723FFDB14CA75A185543770F41508B9983D5EED78225BC6E21F876BFDD08FE8BC63E0CB253C7DFC67C330897C515244F3F631682F2141EBA48CA86DFFF9206F78EDCB9DEC4B2371AEDDBE141EF96A10957E29A94747C4438FB30B14D37E7428EB7FBE4F9D870E72F35F55847F230374BDF56DCAE6C129B4468EBAEDC340FF4CC160C6B410E2D8989488AC8EF9A9FEBBF65AD4FDFBA532A8122EF82DC1A4FFC361CBF9F752B36AA9821683D5F3F5842F90134EB423D5CBC76858B4C0A7BA798EC94A089FDB24B5B25F42D7B6BB8192F07B98EB2DE1FE7BC8B6C740FA5CDE6FB4890D2F1791664A96C25A0A71A541025B5EC825EED91F393505473E21D0620177993982E6C1B6BF91B777B5AB5739B84946C518C7E6AA0E689E9AD1D34E6EF6CA0E709C4AEFECD6F2594B017940742ACEB72C5A52D7D47A3A74F9D09EB84CF82B349DE32278A771CEBC31EBC580C09B11799B1F0E6D11D75B17E389D259C531F957A1E699250711DF2E36F64F21C92EFF698A392D92DF0B2F91991408A076B83149E025A9FFBA1FF1CAED916A2FC1AC5D3081C30B5C64B7D677C314B6E76AC20ED8BB4A4C0EB465AE5C0C265969264B27E6D54C266F79E58E2FA6A381069090BEC00189562ABCF831ADC86A05A2FC7FFAA70DBD3FA60E09D447CD76B2FF2B851C38E72650ADE093BA8BD000000067B95DE445ABF89161DFF4B91A4A9E3BF156A39A4660F98F06BF3F017686D9DFC362C948646B3C9848803E6D9BA1F7D3967F709CDDD35DC77D60356F0C36808900B491CB4ECBBABEC128E7C81A46E62A67B57640A0A78BE1CBF7DD9D419A10CD8686D16621A80816BFDB5BDC56211D72CA70B81F1117D129529A7570CF79CF52A7028A48538ECDD3B38D3D5D62D26246595C4FB73A525A5ED2C30524EBB1D8CC82E0C19BC4977C6898FF95FD3D310B0BAE71696CEF93C6A552456BF96E9D075E383BB7543C675842BAFBFC7CDB88483B3276C29D4F0A341C2D406E40D4653B7E4D045851ACF6A0A0EA9C710B805CCED4635EE8C107362F0FC8D80C14D0AC49C516703D26D14752F34C1C0D2C4247581C18C2CF4DE48E9CE949BE7C888E9CAEBE4A415E291FD107D21DC1F084B1158208249F28F4F7C7E931BA7B3BD0D824A4570'])", + "cbor":"D28444A101382DA1044649747342696754546869732069732074686520636F6E74656E742E5909D000000000000000000000000391291DE76CE6E24D1E2A9B60266519BC8CE889F814DEB0FC00EDD3129DE3AB9B9AA5B5AC783BDF0FE689F57FB204F1992DBC1CE2484F316C74BCE3F2094CFA8E96A4A9548CEAD0F78EE5D549510D1910F647320448AE27ECCE77249802A0C39C645BF8DB08573AF52C93D91FD0E217F245C752C176B81514EB6E3067E0FBB329225EAA88C7D21635E32AE84213F89018CB06F1B84E61EAC348B690D7C6265C19F9D868952D99826AECD417B5279DD674CD951C306016CFEE4FEE3BFCF5EE5A5AD08B5B4F53BC93995F26CFE7C0C1C5BA2574C1F2D8470993E8BD47EF9B9CF309EF895226E92BE60683459009611DEFBB9A43217956A0AB2959BBDA0FECA39DE37E7C4A6CD8A5314D6B02B377406D5A5E589E91FEAA9F2E4EC1682BA1F633C7784499323E40DA651F71D3C19E38C634D898B0C508324C0BFCF7C5F0A8C014B4AF200A739F96CDDBA94DAF86CE80C76158D4F5CF3CD2BA9F1393DF47E556887F9168540485242A05EC6BCC76659EC3D0D2FEDAE3FD1608A701C226F5FD83C9B1ED3152DDAC7426C30E3390BEC8F1DA6174ABE8D3568C9B76B149EB077D61AC15B8FB11B8CE5F9D14E448E216F375E1F96A52D39619459B131026143E8809BAD408F5EF66CD3DA227431E68670C0B4B2C3801E1E9025B1EBED218E0956967158CCC274C704ADCD8CC23C149A89EDA25478742DADC15F233844535E4021000B5D557313D4F271875680E6D5E7F6681FDD19F8B9A748CABB2377AAC1387FDB80E618EB7D69A368729CA9A092AF91EBE1C584C35FE62734D1D53D10B35DD02093A201C889AD37A558B610F1AB00179A11F881600E944CEDC47A7AE6D828009D7C61FFEA9DD5AA5406408E2E85DC056E47B57589EABA18E792F4631AF62D4588A1818167274273C69E7A0735BE5DADA7E224E3B178B3B093212EB74E762F564A26D577AA22EBD8C7B4A999419908E2F2D9C8689DC923905C198B9EE335D1E0DE6D689655F446DFFEA997B6E58F5F648415233EDE3B9D8A2DB29E8C3DDE5D8DBD55E6348CD9F421783DB090E087DE46425D62D513597B00D7DE32FAD87752A79CEE8B2A38B1E0F2562836721CBBFBA20F131130C009A436B93A0BB44FCBB86228B1BF1A35F4FC626817924EAEBD5B78D64A7970D18DADE90CF0AD759B1C45D953C08CD1189685077C5A56069DA0944669D797496F8F886FEA6F792598DB2AC66B657AF838ED3C3A914DFFBB164170A1F63250B125EDA53ECAEAF6EE0D2B8A3C804104D7ED575B66469BC59F37EEC6C6F6FB19E0F7EA02D7C85306230063ADB58950589F6FFAFF1407233828AE0DFBE5889E5DE00BB640A4BC24C3F704488FA669676A9EBBBED399B8A9AC0EE4CC944F864B21F642E04F610319AC9271F8BD820E77E41DAC6553D234D9480E26142C0FA37416651D6450E1F2082BD0213D6783E1AE3CC5C5AF677C3316E173BA4716D6BC8A9D89383F8B025A0859B99A43DAEAF8DDAED46D223B9B503651A67560BFEB2F35BA544722620EC4086DCC77E6E87BB53F1F18C38368662BE460EDE31325CAEAEBF018A6FA9D32E3C3A6898E15FE114DCCE51241C61AFABC36DE3608B4D342712A833615C6131E89E1D46B713D9638A08B5A768D53AF0298B9C874DED7084358223840C2E78CD6FBFCA695279A4C1883BB7DE81B04A069DE8277F7F5109C16938347A643713C9AC36FFFC8BF141E899F48BC25C7B636D43BEBCFA7742D4E1462263E56732AD2021EEF8CE84023C4959CFD250343D62074724907DE9D49EA2F6C968FD9E9BF28FEAFCDC81702108805DEC60F2781272D2425A6EE29C66122D2C557867C1A5AED82131E06FC384ECF49017E1C9D6CF63B9F2285CCF890CBB9BBF796E0FD02101948B7EF6638493677B33FD787D9D3FC2C7CC7BABC21AF8C748AFB80CF86B45DC89F0B9C7959621E85B98B542DC263DB9255273BB9054A7F194748F28373BA123D73FC71FEF43E7E2AC9A80008E85CF2F04AA433075DFC54C4DE24A341EBF7CF1E6B383DBBA85898FDC368017FD67C153E7A991A3A3CEE6DAE4FBE2FE6F25A8DF314140A8176C8E6FD0C6F042CA66EB6ABBA9A2502BB6DFA52960AE86A942A673E4E45439594FEFCD2974E20554D1DC70B8E034FD1787801343D5F6EDC95CE0348C25727C771526E3FD4EFFB5F16E25A1EA3DCD8282E778E91AE9B339A5013C77FD6EA2432704E293F5E82A24121C73900BEA4B4EF14A2ADC1AB3C68224BAE1DE9C61A48B84E84C1B0E83701BE3D988012A24FA40268C8D6EF1FD2818AE8E4B6F52F89BEAB6BFDD1FF1B7ECD573EDFF3703B800B5B2A206F451F1BF2713B4AE9085BD7FE34AD4306A290E4CDB7817EE9AB7CCFB816D002B619F77D46D7DD0F8EEFE10F5C0F9723FFDB14CA75A185543770F41508B9983D5EED78225BC6E21F876BFDD08FE8BC63E0CB253C7DFC67C330897C515244F3F631682F2141EBA48CA86DFFF9206F78EDCB9DEC4B2371AEDDBE141EF96A10957E29A94747C4438FB30B14D37E7428EB7FBE4F9D870E72F35F55847F230374BDF56DCAE6C129B4468EBAEDC340FF4CC160C6B410E2D8989488AC8EF9A9FEBBF65AD4FDFBA532A8122EF82DC1A4FFC361CBF9F752B36AA9821683D5F3F5842F90134EB423D5CBC76858B4C0A7BA798EC94A089FDB24B5B25F42D7B6BB8192F07B98EB2DE1FE7BC8B6C740FA5CDE6FB4890D2F1791664A96C25A0A71A541025B5EC825EED91F393505473E21D0620177993982E6C1B6BF91B777B5AB5739B84946C518C7E6AA0E689E9AD1D34E6EF6CA0E709C4AEFECD6F2594B017940742ACEB72C5A52D7D47A3A74F9D09EB84CF82B349DE32278A771CEBC31EBC580C09B11799B1F0E6D11D75B17E389D259C531F957A1E699250711DF2E36F64F21C92EFF698A392D92DF0B2F91991408A076B83149E025A9FFBA1FF1CAED916A2FC1AC5D3081C30B5C64B7D677C314B6E76AC20ED8BB4A4C0EB465AE5C0C265969264B27E6D54C266F79E58E2FA6A381069090BEC00189562ABCF831ADC86A05A2FC7FFAA70DBD3FA60E09D447CD76B2FF2B851C38E72650ADE093BA8BD000000067B95DE445ABF89161DFF4B91A4A9E3BF156A39A4660F98F06BF3F017686D9DFC362C948646B3C9848803E6D9BA1F7D3967F709CDDD35DC77D60356F0C36808900B491CB4ECBBABEC128E7C81A46E62A67B57640A0A78BE1CBF7DD9D419A10CD8686D16621A80816BFDB5BDC56211D72CA70B81F1117D129529A7570CF79CF52A7028A48538ECDD3B38D3D5D62D26246595C4FB73A525A5ED2C30524EBB1D8CC82E0C19BC4977C6898FF95FD3D310B0BAE71696CEF93C6A552456BF96E9D075E383BB7543C675842BAFBFC7CDB88483B3276C29D4F0A341C2D406E40D4653B7E4D045851ACF6A0A0EA9C710B805CCED4635EE8C107362F0FC8D80C14D0AC49C516703D26D14752F34C1C0D2C4247581C18C2CF4DE48E9CE949BE7C888E9CAEBE4A415E291FD107D21DC1F084B1158208249F28F4F7C7E931BA7B3BD0D824A4570" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-01.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-01.json new file mode 100644 index 0000000..ceb4dbb --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-01.json @@ -0,0 +1,44 @@ +{ + "title":"HKDF-AES-128-01: Direct HKDF AES-128 - with salt", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "protected":{ + "alg":"HKDF-AES-128" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"F0CCBAF836D73DA63ED8508EF966EEC9", + "recipients":[ + { + "Context_hex":"840A83F6F6F683F6F6F682188043A1012B" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'EFCF947DDDD19D2E894C9388B6032A987A06FF7E64A88D3C11075E9A', [[h'A1012B', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581CEFCF947DDDD19D2E894C9388B6032A987A06FF7E64A88D3C11075E9A818343A1012BA2335061616262636364646565666667676868044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-02.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-02.json new file mode 100644 index 0000000..32a8a14 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-02.json @@ -0,0 +1,44 @@ +{ + "title":"HKDF-AES-128-02: Direct HKDF AES-128 - with salt", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-256/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "protected":{ + "alg":"HKDF-AES-128" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010B40", + "CEK_hex":"9F881DC284490E4C2133EBB6946EB6E2172B5B66A9D0E0862B1A7812165CED7F", + "recipients":[ + { + "Context_hex":"840B83F6F6F683F6F6F68219010043A1012B" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010B', {5: h'BFE89563EE070CE187BDF1C472'}, h'77B02BF7C3C9DAC2AFF027F79C8B6E50AFDBA25F5F48ED4E04C33D76', [[h'A1012B', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010BA1054DBFE89563EE070CE187BDF1C472581C77B02BF7C3C9DAC2AFF027F79C8B6E50AFDBA25F5F48ED4E04C33D76818343A1012BA2335061616262636364646565666667676868044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-03.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-03.json new file mode 100644 index 0000000..d861465 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-03.json @@ -0,0 +1,43 @@ +{ + "title":"HKDF-AES-128-03: Direct HKDF AES-128 - with salt", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "protected":{ + "alg":"HKDF-AES-128" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh" + } + } + ] + } + }, + "intermediates":{ + "AAD_hex":"8369456E76656C6F70656443A1010A40", + "CEK_hex":"C0DFE3BA00D222CC9FE1C90AA0EF88E7CDB1C67C6C1BE20C5746A909C23F5A6C", + "recipients":[ + { + "Context_hex":"840583F6F6F683F6F6F68219010043A1012B" + } + ], + "ToMac_hex":"84634D414343A101054054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'455A448E8555D9FE809E1E7373F0AE7B970CB10C4CAFEADE1912041C7376BD02', [[h'A1012B', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A10105A054546869732069732074686520636F6E74656E742E5820455A448E8555D9FE809E1E7373F0AE7B970CB10C4CAFEADE1912041C7376BD02818343A1012BA2335061616262636364646565666667676868044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-04.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-04.json new file mode 100644 index 0000000..1e72b55 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-04.json @@ -0,0 +1,43 @@ +{ + "title":"HKDF-AES-128-04: Direct HKDF AES-128 - salt ", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "protected":{ + "alg":"HKDF-AES-128" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh" + } + } + ] + } + }, + "intermediates":{ + "AAD_hex":"8369456E76656C6F70656443A1010A40", + "CEK_hex":"78FCC6C1395B8CFD3CBB893CCE3483A75B5D829DA2453B99C12E816186F7B95E65FC77C0C9C94495C22215CC6CCC1993893B224E5448B6310D3EC5CD6E1B1E49", + "recipients":[ + { + "Context_hex":"840783F6F6F683F6F6F68219020043A1012B" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'414B7441D3B882AEED8BC71CFE79C07A684B2FB93DB412F9C8196AFF9C903F1F19FB6DFB27F31343A57D341351BBDE557132CB30B804CFAD2D7EBD075CF439E1', [[h'A1012B', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E5840414B7441D3B882AEED8BC71CFE79C07A684B2FB93DB412F9C8196AFF9C903F1F19FB6DFB27F31343A57D341351BBDE557132CB30B804CFAD2D7EBD075CF439E1818343A1012BA2335061616262636364646565666667676868044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-05.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-05.json new file mode 100644 index 0000000..a48831a --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-05.json @@ -0,0 +1,46 @@ +{ + "title":"HKDF-AES-128-05: Direct HKDF AES-128 - salt + U id + v id", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "protected":{ + "alg":"HKDF-AES-128" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh", + "apu_id":"Sender", + "apv_id":"Recipient" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"7CC520F4248B71FB43DECA848CAAB874", + "recipients":[ + { + "Context_hex":"840A834653656E646572F6F68349526563697069656E74F6F682188043A1012B" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'3FDD6899FABE65586E86AA7C4FCF34F2A3A9B40D1D3FE9FBFB78A159', [[h'A1012B', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574', -21: h'53656E646572', -24: h'526563697069656E74'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C3FDD6899FABE65586E86AA7C4FCF34F2A3A9B40D1D3FE9FBFB78A159818343A1012BA4335061616262636364646565666667676868044A6F75722D736563726574344653656E6465723749526563697069656E7440" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-06.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-06.json new file mode 100644 index 0000000..249902b --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-06.json @@ -0,0 +1,46 @@ +{ + "title":"HKDF-AES-128-06: Direct HKDF AES-128 - salt + u nonce + v nonce", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "protected":{ + "alg":"HKDF-AES-128" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh", + "apu_nonce":"S101", + "apv_nonce":"R102" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"671BBD43EF98AA4B5D265FE93633EED3", + "recipients":[ + { + "Context_hex":"840A83F64453313031F683F64452313032F682188043A1012B" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'41346629B4D9F26A8F9920516ACD338A27265AFDA28258D2071A60BC', [[h'A1012B', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574', -22: h'53313031', -25: h'52313032'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C41346629B4D9F26A8F9920516ACD338A27265AFDA28258D2071A60BC818343A1012BA4335061616262636364646565666667676868044A6F75722D7365637265743544533130313818445231303240" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-07.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-07.json new file mode 100644 index 0000000..11c735d --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-07.json @@ -0,0 +1,46 @@ +{ + "title":"HKDF-AES-128-07: Direct HKDF AES-128 - salt + u nonce + v nonce", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "protected":{ + "alg":"HKDF-AES-128" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh", + "apu_nonce":"S101", + "apv_nonce":"R102" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"671BBD43EF98AA4B5D265FE93633EED3", + "recipients":[ + { + "Context_hex":"840A83F64453313031F683F64452313032F682188043A1012B" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'41346629B4D9F26A8F9920516ACD338A27265AFDA28258D2071A60BC', [[h'A1012B', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574', -22: h'53313031', -25: h'52313032'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C41346629B4D9F26A8F9920516ACD338A27265AFDA28258D2071A60BC818343A1012BA4335061616262636364646565666667676868044A6F75722D7365637265743544533130313818445231303240" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-08.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-08.json new file mode 100644 index 0000000..56fb299 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-08.json @@ -0,0 +1,45 @@ +{ + "title":"HKDF-AES-128-08: Direct HKDF AES-128 - U other + v other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "protected":{ + "alg":"HKDF-AES-128" + }, + "unprotected":{ + "kid":"our-secret", + "apu_other":"S-other", + "apv_other":"R-other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"BEA7372E0FF778D924B334C5BA37DD28", + "recipients":[ + { + "Context_hex":"840A83F6F647532D6F7468657283F6F647522D6F7468657282188043A1012B" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'A923B5190A121CE580D37233A4B5190CE02970DAF4B7A84C2C116FDA', [[h'A1012B', {-23: h'532D6F74686572', 4: h'6F75722D736563726574', -26: h'522D6F74686572'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581CA923B5190A121CE580D37233A4B5190CE02970DAF4B7A84C2C116FDA818343A1012BA33647532D6F74686572044A6F75722D736563726574381947522D6F7468657240" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-09.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-09.json new file mode 100644 index 0000000..41517cb --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-09.json @@ -0,0 +1,47 @@ +{ + "title":"HKDF-AES-128-09: Direct HKDF AES-128 - U id + u nonce + v id + v nonce", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "protected":{ + "alg":"HKDF-AES-128" + }, + "unprotected":{ + "kid":"our-secret", + "apu_id":"Sender", + "apv_id":"Recipient", + "apu_nonce":"S101", + "apv_nonce":"R102" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"DE80DF2CB14AA55DE964AD5D964B0A5A", + "recipients":[ + { + "Context_hex":"840A834653656E6465724453313031F68349526563697069656E744452313032F682188043A1012B" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'87C6DE98123B98DE0370AAB907393C44C4490959169758B1C9D45FD6', [[h'A1012B', {-21: h'53656E646572', 4: h'6F75722D736563726574', -24: h'526563697069656E74', -22: h'53313031', -25: h'52313032'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C87C6DE98123B98DE0370AAB907393C44C4490959169758B1C9D45FD6818343A1012BA5344653656E646572044A6F75722D7365637265743749526563697069656E743544533130313818445231303240" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-10.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-10.json new file mode 100644 index 0000000..c6d0d57 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-10.json @@ -0,0 +1,47 @@ +{ + "title":"HKDF-AES-128-10: Direct HKDF AES-128 - U id + u other + v id + v other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "protected":{ + "alg":"HKDF-AES-128" + }, + "unprotected":{ + "kid":"our-secret", + "apu_id":"Sender", + "apv_id":"Recipient", + "apu_other":"S-other", + "apv_other":"R-other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"47E6AE1D2414389811A1FFB5E183391B", + "recipients":[ + { + "Context_hex":"840A834653656E646572F647532D6F746865728349526563697069656E74F647522D6F7468657282188043A1012B" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'BC9FA9456EC467CA0F1A2FC9743B5ED8B4773960F514C51778A655FA', [[h'A1012B', {-21: h'53656E646572', 4: h'6F75722D736563726574', -24: h'526563697069656E74', -23: h'532D6F74686572', -26: h'522D6F74686572'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581CBC9FA9456EC467CA0F1A2FC9743B5ED8B4773960F514C51778A655FA818343A1012BA5344653656E646572044A6F75722D7365637265743749526563697069656E743647532D6F74686572381947522D6F7468657240" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-11.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-11.json new file mode 100644 index 0000000..b5f3760 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-11.json @@ -0,0 +1,47 @@ +{ + "title":"HKDF-AES-128-11: Direct HKDF AES-128 - U nonce + u other + v nonce + v other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "protected":{ + "alg":"HKDF-AES-128" + }, + "unprotected":{ + "kid":"our-secret", + "apu_nonce":"S101", + "apv_nonce":"R102", + "apu_other":"S-other", + "apv_other":"R-other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"36FA1E3B6DCA7D53BC9F746E2FF3080C", + "recipients":[ + { + "Context_hex":"840A83F6445331303147532D6F7468657283F6445231303247522D6F7468657282188043A1012B" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'9B42933FD5662AA78669B95B5AE8511090AA5F7D34A7812A81B8860D', [[h'A1012B', {-22: h'53313031', 4: h'6F75722D736563726574', -25: h'52313032', -23: h'532D6F74686572', -26: h'522D6F74686572'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C9B42933FD5662AA78669B95B5AE8511090AA5F7D34A7812A81B8860D818343A1012BA5354453313031044A6F75722D736563726574381844523130323647532D6F74686572381947522D6F7468657240" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-12.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-12.json new file mode 100644 index 0000000..ecc305b --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-12.json @@ -0,0 +1,49 @@ +{ + "title":"HKDF-AES-128-12: Direct HKDF AES-128 - u id + u nonce + u other + v id + v nonce v other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "protected":{ + "alg":"HKDF-AES-128" + }, + "unprotected":{ + "kid":"our-secret", + "apu_id":"Sender", + "apv_id":"Recipient", + "apu_nonce":"S101", + "apv_nonce":"R102", + "apu_other":"S-other", + "apv_other":"R-other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"F8CDA846C55EE3DB794960B4530EAD6E", + "recipients":[ + { + "Context_hex":"840A834653656E646572445331303147532D6F746865728349526563697069656E74445231303247522D6F7468657282188043A1012B" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'C22D4D454C10FB7D20FD588BD916F31B89159940048C1CB0BFDA4D79', [[h'A1012B', {-21: h'53656E646572', 4: h'6F75722D736563726574', -24: h'526563697069656E74', -22: h'53313031', -25: h'52313032', -23: h'532D6F74686572', -26: h'522D6F74686572'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581CC22D4D454C10FB7D20FD588BD916F31B89159940048C1CB0BFDA4D79818343A1012BA7344653656E646572044A6F75722D7365637265743749526563697069656E74354453313031381844523130323647532D6F74686572381947522D6F7468657240" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-13.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-13.json new file mode 100644 index 0000000..bb51e09 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-13.json @@ -0,0 +1,47 @@ +{ + "title":"HKDF-AES-128-13: Direct HKDF AES-128 - U id + Pub Other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "protected":{ + "alg":"HKDF-AES-128" + }, + "unprotected":{ + "kid":"our-secret", + "apu_id":"Sender" + }, + "unsent":{ + "pub_other":"Public Other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"5E0E9C9FB760ED409A45B8B335F50175", + "recipients":[ + { + "Context_hex":"840A834653656E646572F6F683F6F6F683188043A1012B4C5075626C6963204F74686572" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'1C13CAB7971BFDE757EF20AE086FEE3FD06E173D101132D85A02A996', [[h'A1012B', {-21: h'53656E646572', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C1C13CAB7971BFDE757EF20AE086FEE3FD06E173D101132D85A02A996818343A1012BA2344653656E646572044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-14.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-14.json new file mode 100644 index 0000000..ddc74c5 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-128-14.json @@ -0,0 +1,46 @@ +{ + "title":"HKDF-AES-128-14: Direct HKDF AES-128 - Priv Other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbg" + }, + "protected":{ + "alg":"HKDF-AES-128" + }, + "unprotected":{ + "kid":"our-secret" + }, + "unsent":{ + "priv_other":"Private Other Data" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"E2D086C8A0DF56833EE10E8380076A79", + "recipients":[ + { + "Context_hex":"850A83F6F6F683F6F6F682188043A1012B5250726976617465204F746865722044617461" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'97539E7960276A8CF77A84BB28008082C84D09DB42CCED9FB956D7DB', [[h'A1012B', {4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C97539E7960276A8CF77A84BB28008082C84D09DB42CCED9FB956D7DB818343A1012BA1044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-01.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-01.json new file mode 100644 index 0000000..022f4c6 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-01.json @@ -0,0 +1,44 @@ +{ + "title":"HKDF-AES-256-01: Direct HKDF AES-256 - with salt", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "protected":{ + "alg":"HKDF-AES-256" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"17B0BCA769867BF795D2AA0D77C6984D", + "recipients":[ + { + "Context_hex":"840A83F6F6F683F6F6F682188043A1012C" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'709789D0577240924B3F0C12C6A51F4AC92E09733DABF536F06C4BE0', [[h'A1012C', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C709789D0577240924B3F0C12C6A51F4AC92E09733DABF536F06C4BE0818343A1012CA2335061616262636364646565666667676868044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-02.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-02.json new file mode 100644 index 0000000..3ad9c93 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-02.json @@ -0,0 +1,44 @@ +{ + "title":"HKDF-AES-256-02: Direct HKDF AES-256 - with salt", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-256/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "protected":{ + "alg":"HKDF-AES-256" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010B40", + "CEK_hex":"58DFB545FAFF347BE6DA817F9E3B1149856D1ECF52FFE39CE30B65A92D4C6F00", + "recipients":[ + { + "Context_hex":"840B83F6F6F683F6F6F68219010043A1012C" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010B', {5: h'BFE89563EE070CE187BDF1C472'}, h'C5C9F6E8D60C0BFD2EF74FA7CC0DD0029461C4C3D6A98DEBFA389775', [[h'A1012C', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010BA1054DBFE89563EE070CE187BDF1C472581CC5C9F6E8D60C0BFD2EF74FA7CC0DD0029461C4C3D6A98DEBFA389775818343A1012CA2335061616262636364646565666667676868044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-03.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-03.json new file mode 100644 index 0000000..83be2fe --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-03.json @@ -0,0 +1,43 @@ +{ + "title":"HKDF-AES-256-03: Direct HKDF AES-256 - with salt", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "protected":{ + "alg":"HKDF-AES-256" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh" + } + } + ] + } + }, + "intermediates":{ + "AAD_hex":"8369456E76656C6F70656443A1010A40", + "CEK_hex":"9FA2B55BB98134BC1B5AAA706DDC9B18B01FED3A693A5D9F73FE8B5EE449FFCE", + "recipients":[ + { + "Context_hex":"840583F6F6F683F6F6F68219010043A1012C" + } + ], + "ToMac_hex":"84634D414343A101054054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'67F06E0EDC8265B40F77ABD1844A5293D63D0A68E1BC70EAC3A0E76834E35A99', [[h'A1012C', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A10105A054546869732069732074686520636F6E74656E742E582067F06E0EDC8265B40F77ABD1844A5293D63D0A68E1BC70EAC3A0E76834E35A99818343A1012CA2335061616262636364646565666667676868044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-04.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-04.json new file mode 100644 index 0000000..66098a0 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-04.json @@ -0,0 +1,43 @@ +{ + "title":"HKDF-AES-256-04: Direct HKDF AES-256 - salt ", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "protected":{ + "alg":"HKDF-AES-256" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh" + } + } + ] + } + }, + "intermediates":{ + "AAD_hex":"8369456E76656C6F70656443A1010A40", + "CEK_hex":"257E6FA38CB4BF4DC52F0C03A87F0082E2CE2B049CA8258421EB88453FB4F2CC07714E91289D7AE3482C1C6861A75FA2744EE4D3C96549460576F09467A93A48", + "recipients":[ + { + "Context_hex":"840783F6F6F683F6F6F68219020043A1012C" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'FF8A1F03CC225BC8213BA4B9A8163A58FCAA4B326A0CB349B2E03C23D8426ACD6BFC43E95B7F13430165253839AD48E94E1E5A3B9F9E653E74FD01EF267DC76C', [[h'A1012C', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E5840FF8A1F03CC225BC8213BA4B9A8163A58FCAA4B326A0CB349B2E03C23D8426ACD6BFC43E95B7F13430165253839AD48E94E1E5A3B9F9E653E74FD01EF267DC76C818343A1012CA2335061616262636364646565666667676868044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-05.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-05.json new file mode 100644 index 0000000..fbbd5cb --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-05.json @@ -0,0 +1,46 @@ +{ + "title":"HKDF-AES-256-05: Direct HKDF AES-256 - salt + U id + v id", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "protected":{ + "alg":"HKDF-AES-256" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh", + "apu_id":"Sender", + "apv_id":"Recipient" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"4B00778BB11655B19BB6BB18DB6D30C3", + "recipients":[ + { + "Context_hex":"840A834653656E646572F6F68349526563697069656E74F6F682188043A1012C" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'6971DB82D23BDC6631327C50CF28B8F6277461251CF410FC03A1D177', [[h'A1012C', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574', -21: h'53656E646572', -24: h'526563697069656E74'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C6971DB82D23BDC6631327C50CF28B8F6277461251CF410FC03A1D177818343A1012CA4335061616262636364646565666667676868044A6F75722D736563726574344653656E6465723749526563697069656E7440" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-06.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-06.json new file mode 100644 index 0000000..bfd3564 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-06.json @@ -0,0 +1,46 @@ +{ + "title":"HKDF-AES-256-06: Direct HKDF AES-256 - salt + u nonce + v nonce", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "protected":{ + "alg":"HKDF-AES-256" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh", + "apu_nonce":"S101", + "apv_nonce":"R102" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"E2B731C818D1C04C84F94DF0C4D3D584", + "recipients":[ + { + "Context_hex":"840A83F64453313031F683F64452313032F682188043A1012C" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'AEC8C1A98EE1CF585BAB3A9E987CCB46CDD4836EA803BDF11CC95C9D', [[h'A1012C', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574', -22: h'53313031', -25: h'52313032'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581CAEC8C1A98EE1CF585BAB3A9E987CCB46CDD4836EA803BDF11CC95C9D818343A1012CA4335061616262636364646565666667676868044A6F75722D7365637265743544533130313818445231303240" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-07.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-07.json new file mode 100644 index 0000000..7e73e2b --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-07.json @@ -0,0 +1,46 @@ +{ + "title":"HKDF-AES-256-07: Direct HKDF AES-256 - salt + u nonce + v nonce", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "protected":{ + "alg":"HKDF-AES-256" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh", + "apu_nonce":"S101", + "apv_nonce":"R102" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"E2B731C818D1C04C84F94DF0C4D3D584", + "recipients":[ + { + "Context_hex":"840A83F64453313031F683F64452313032F682188043A1012C" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'AEC8C1A98EE1CF585BAB3A9E987CCB46CDD4836EA803BDF11CC95C9D', [[h'A1012C', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574', -22: h'53313031', -25: h'52313032'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581CAEC8C1A98EE1CF585BAB3A9E987CCB46CDD4836EA803BDF11CC95C9D818343A1012CA4335061616262636364646565666667676868044A6F75722D7365637265743544533130313818445231303240" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-08.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-08.json new file mode 100644 index 0000000..6f331ff --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-08.json @@ -0,0 +1,45 @@ +{ + "title":"HKDF-AES-256-08: Direct HKDF AES-256 - U other + v other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "protected":{ + "alg":"HKDF-AES-256" + }, + "unprotected":{ + "kid":"our-secret", + "apu_other":"S-other", + "apv_other":"R-other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"477849D6B2724F29082467CACEAD8688", + "recipients":[ + { + "Context_hex":"840A83F6F647532D6F7468657283F6F647522D6F7468657282188043A1012C" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'075294EC055C4435BCDC51E9E9B292EE2A30A906CFBD98AEF295C370', [[h'A1012C', {-23: h'532D6F74686572', 4: h'6F75722D736563726574', -26: h'522D6F74686572'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C075294EC055C4435BCDC51E9E9B292EE2A30A906CFBD98AEF295C370818343A1012CA33647532D6F74686572044A6F75722D736563726574381947522D6F7468657240" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-09.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-09.json new file mode 100644 index 0000000..66db2a3 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-09.json @@ -0,0 +1,47 @@ +{ + "title":"HKDF-AES-256-09: Direct HKDF AES-256 - U id + u nonce + v id + v nonce", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "protected":{ + "alg":"HKDF-AES-256" + }, + "unprotected":{ + "kid":"our-secret", + "apu_id":"Sender", + "apv_id":"Recipient", + "apu_nonce":"S101", + "apv_nonce":"R102" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"0BBE94D6E4E8002B53A49B0181284A4C", + "recipients":[ + { + "Context_hex":"840A834653656E6465724453313031F68349526563697069656E744452313032F682188043A1012C" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'C39A7F897356189F521B971BFED41D75B8683AB50D620D1619D978BC', [[h'A1012C', {-21: h'53656E646572', 4: h'6F75722D736563726574', -24: h'526563697069656E74', -22: h'53313031', -25: h'52313032'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581CC39A7F897356189F521B971BFED41D75B8683AB50D620D1619D978BC818343A1012CA5344653656E646572044A6F75722D7365637265743749526563697069656E743544533130313818445231303240" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-10.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-10.json new file mode 100644 index 0000000..a931203 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-10.json @@ -0,0 +1,47 @@ +{ + "title":"HKDF-AES-256-10: Direct HKDF AES-256 - U id + u other + v id + v other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "protected":{ + "alg":"HKDF-AES-256" + }, + "unprotected":{ + "kid":"our-secret", + "apu_id":"Sender", + "apv_id":"Recipient", + "apu_other":"S-other", + "apv_other":"R-other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"8263A1B8FC6257901A6BF1C1AFB86C0A", + "recipients":[ + { + "Context_hex":"840A834653656E646572F647532D6F746865728349526563697069656E74F647522D6F7468657282188043A1012C" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'CA32399437BD5AC78F0DAFCF090385BAA077D77CEBEEDC4CD15E2CA3', [[h'A1012C', {-21: h'53656E646572', 4: h'6F75722D736563726574', -24: h'526563697069656E74', -23: h'532D6F74686572', -26: h'522D6F74686572'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581CCA32399437BD5AC78F0DAFCF090385BAA077D77CEBEEDC4CD15E2CA3818343A1012CA5344653656E646572044A6F75722D7365637265743749526563697069656E743647532D6F74686572381947522D6F7468657240" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-11.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-11.json new file mode 100644 index 0000000..5749bc7 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-11.json @@ -0,0 +1,47 @@ +{ + "title":"HKDF-AES-256-11: Direct HKDF AES-256 - U nonce + u other + v nonce + v other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "protected":{ + "alg":"HKDF-AES-256" + }, + "unprotected":{ + "kid":"our-secret", + "apu_nonce":"S101", + "apv_nonce":"R102", + "apu_other":"S-other", + "apv_other":"R-other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"79F109805924B5C0394EF6D0DDC46F51", + "recipients":[ + { + "Context_hex":"840A83F6445331303147532D6F7468657283F6445231303247522D6F7468657282188043A1012C" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'9CD7FA802900737A1D067463DD446ED538B51E1796F83E04FE833635', [[h'A1012C', {-22: h'53313031', 4: h'6F75722D736563726574', -25: h'52313032', -23: h'532D6F74686572', -26: h'522D6F74686572'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C9CD7FA802900737A1D067463DD446ED538B51E1796F83E04FE833635818343A1012CA5354453313031044A6F75722D736563726574381844523130323647532D6F74686572381947522D6F7468657240" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-12.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-12.json new file mode 100644 index 0000000..f0b9eb4 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-12.json @@ -0,0 +1,49 @@ +{ + "title":"HKDF-AES-256-12: Direct HKDF AES-256 - u id + u nonce + u other + v id + v nonce v other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "protected":{ + "alg":"HKDF-AES-256" + }, + "unprotected":{ + "kid":"our-secret", + "apu_id":"Sender", + "apv_id":"Recipient", + "apu_nonce":"S101", + "apv_nonce":"R102", + "apu_other":"S-other", + "apv_other":"R-other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"B0AD57736FA2356B494ECFF99B80811F", + "recipients":[ + { + "Context_hex":"840A834653656E646572445331303147532D6F746865728349526563697069656E74445231303247522D6F7468657282188043A1012C" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'6EF45C1291D9CFD6F5FC0C8CED5A3480E3D7CEC586BFD98CE214105C', [[h'A1012C', {-21: h'53656E646572', 4: h'6F75722D736563726574', -24: h'526563697069656E74', -22: h'53313031', -25: h'52313032', -23: h'532D6F74686572', -26: h'522D6F74686572'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C6EF45C1291D9CFD6F5FC0C8CED5A3480E3D7CEC586BFD98CE214105C818343A1012CA7344653656E646572044A6F75722D7365637265743749526563697069656E74354453313031381844523130323647532D6F74686572381947522D6F7468657240" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-13.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-13.json new file mode 100644 index 0000000..09fbc38 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-13.json @@ -0,0 +1,47 @@ +{ + "title":"HKDF-AES-256-13: Direct HKDF AES-256 - U id + Pub Other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "protected":{ + "alg":"HKDF-AES-256" + }, + "unprotected":{ + "kid":"our-secret", + "apu_id":"Sender" + }, + "unsent":{ + "pub_other":"Public Other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"C98779D62241BBB7B5989B11DC2CD2F4", + "recipients":[ + { + "Context_hex":"840A834653656E646572F6F683F6F6F683188043A1012C4C5075626C6963204F74686572" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'9C9E6315059087E9C9960EA12F28621746D4AA28589A62EC330D8B0C', [[h'A1012C', {-21: h'53656E646572', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C9C9E6315059087E9C9960EA12F28621746D4AA28589A62EC330D8B0C818343A1012CA2344653656E646572044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-14.json b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-14.json new file mode 100644 index 0000000..a72f082 --- /dev/null +++ b/src/test/resources/Examples/hkdf-aes-examples/hmac-aes-256-14.json @@ -0,0 +1,46 @@ +{ + "title":"HKDF-AES-256-14: Direct HKDF AES-256 - Priv Other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"sec-256", + "use":"enc", + "k":"Dx4tPEtaaXiHlqW0w9Lh8B8uPUxbanmIl6a1xNPi8QA" + }, + "protected":{ + "alg":"HKDF-AES-256" + }, + "unprotected":{ + "kid":"our-secret" + }, + "unsent":{ + "priv_other":"Private Other Data" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"4B8A160155D7CBD853E5684E6C5D75BB", + "recipients":[ + { + "Context_hex":"850A83F6F6F683F6F6F682188043A1012C5250726976617465204F746865722044617461" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'65215970E1BE57DE0C7E38F43249D88C2769088B85266475F5096D1D', [[h'A1012C', {4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C65215970E1BE57DE0C7E38F43249D88C2769088B85266475F5096D1D818343A1012CA1044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-01.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-01.json new file mode 100644 index 0000000..a811e8a --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-01.json @@ -0,0 +1,44 @@ +{ + "title":"HKDF-HMAC-SHA-256-01: Direct HKDF HMAC-SHA-256 - with salt", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-256" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"32547753D1E24F41579D770BA852D4C9", + "recipients":[ + { + "Context_hex":"840A83F6F6F683F6F6F682188043A10129" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'5192B2794858242DE0BC141017137EDE1F597AB41F58D809452F3A2B', [[h'A10129', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C5192B2794858242DE0BC141017137EDE1F597AB41F58D809452F3A2B818343A10129A2335061616262636364646565666667676868044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-02.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-02.json new file mode 100644 index 0000000..2bed359 --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-02.json @@ -0,0 +1,44 @@ +{ + "title":"HKDF-HMAC-SHA-256-02: Direct HKDF HMAC-SHA-256 - with salt", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-256/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-256" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010B40", + "CEK_hex":"8DB73916BF2341B17732FCDA41840AFEEBDCA1418A51D5751EF0D055D92C9219", + "recipients":[ + { + "Context_hex":"840B83F6F6F683F6F6F68219010043A10129" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010B', {5: h'BFE89563EE070CE187BDF1C472'}, h'73C739B6EC556323FDB6B123CF271E77D1465F615A2922743B006ED9', [[h'A10129', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010BA1054DBFE89563EE070CE187BDF1C472581C73C739B6EC556323FDB6B123CF271E77D1465F615A2922743B006ED9818343A10129A2335061616262636364646565666667676868044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-03.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-03.json new file mode 100644 index 0000000..b11417e --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-03.json @@ -0,0 +1,43 @@ +{ + "title":"HKDF-HMAC-SHA-256-03: Direct HKDF HMAC-SHA-256 - with salt", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-256" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh" + } + } + ] + } + }, + "intermediates":{ + "AAD_hex":"8369456E76656C6F70656443A1010A40", + "CEK_hex":"FE0353C4142819F9D74EB16A99CF67FD845E5484CA0435E0009491B93EC3235F", + "recipients":[ + { + "Context_hex":"840583F6F6F683F6F6F68219010043A10129" + } + ], + "ToMac_hex":"84634D414343A101054054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'92356FD58B43BB978B1A627A7353F2094E1CFCEAFBC3D0FCF15BCE74D260FD98', [[h'A10129', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A10105A054546869732069732074686520636F6E74656E742E582092356FD58B43BB978B1A627A7353F2094E1CFCEAFBC3D0FCF15BCE74D260FD98818343A10129A2335061616262636364646565666667676868044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-04.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-04.json new file mode 100644 index 0000000..5df7c7d --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-04.json @@ -0,0 +1,43 @@ +{ + "title":"HKDF-HMAC-SHA-256-04: Direct HKDF HMAC-SHA-256 - salt ", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-256" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh" + } + } + ] + } + }, + "intermediates":{ + "AAD_hex":"8369456E76656C6F70656443A1010A40", + "CEK_hex":"BEDD8C2FE8A6C51693E61814111BF66D5C6C7C7C8ACF10A7668F52422BE38D0C9C55FBD927476E498F63B35C9143368C39B3CC40886153BCB309DEFBE0D13621", + "recipients":[ + { + "Context_hex":"840783F6F6F683F6F6F68219020043A10129" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'71B8F7CBD4590A7C58E9E773B309DABD5BAD23939E5EA9DF603227635B19C2CC4EA085D8A2D4D4346AA8229D9395184FEEE2F5B73F3FEFCD32E4A037B149F2A0', [[h'A10129', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E584071B8F7CBD4590A7C58E9E773B309DABD5BAD23939E5EA9DF603227635B19C2CC4EA085D8A2D4D4346AA8229D9395184FEEE2F5B73F3FEFCD32E4A037B149F2A0818343A10129A2335061616262636364646565666667676868044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-05.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-05.json new file mode 100644 index 0000000..2024a16 --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-05.json @@ -0,0 +1,46 @@ +{ + "title":"HKDF-HMAC-SHA-256-05: Direct HKDF HMAC-SHA-256 - salt + U id + v id", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-256" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh", + "apu_id":"Sender", + "apv_id":"Recipient" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"2E9259EB959F3FC0A3916E7A5E38403F", + "recipients":[ + { + "Context_hex":"840A834653656E646572F6F68349526563697069656E74F6F682188043A10129" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'C4CEC13466EEAA20D92E94FBD1FE9B97793AF44A21408EDE75A96F47', [[h'A10129', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574', -21: h'53656E646572', -24: h'526563697069656E74'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581CC4CEC13466EEAA20D92E94FBD1FE9B97793AF44A21408EDE75A96F47818343A10129A4335061616262636364646565666667676868044A6F75722D736563726574344653656E6465723749526563697069656E7440" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-06.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-06.json new file mode 100644 index 0000000..49db070 --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-06.json @@ -0,0 +1,46 @@ +{ + "title":"HKDF-HMAC-SHA-256-06: Direct HKDF HMAC-SHA-256 - salt + u nonce + v nonce", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-256" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh", + "apu_nonce":"S101", + "apv_nonce":"R102" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"17B0AEBADE7A58F3160DD358BD3E51C0", + "recipients":[ + { + "Context_hex":"840A83F64453313031F683F64452313032F682188043A10129" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'08F7BF5AE142A79ED4BDEDC978559D762C394444527F2F797AECC298', [[h'A10129', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574', -22: h'53313031', -25: h'52313032'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C08F7BF5AE142A79ED4BDEDC978559D762C394444527F2F797AECC298818343A10129A4335061616262636364646565666667676868044A6F75722D7365637265743544533130313818445231303240" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-07.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-07.json new file mode 100644 index 0000000..2c5468c --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-07.json @@ -0,0 +1,46 @@ +{ + "title":"HKDF-HMAC-SHA-256-07: Direct HKDF HMAC-SHA-256 - salt + u nonce + v nonce", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-256" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh", + "apu_nonce":"S101", + "apv_nonce":"R102" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"17B0AEBADE7A58F3160DD358BD3E51C0", + "recipients":[ + { + "Context_hex":"840A83F64453313031F683F64452313032F682188043A10129" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'08F7BF5AE142A79ED4BDEDC978559D762C394444527F2F797AECC298', [[h'A10129', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574', -22: h'53313031', -25: h'52313032'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C08F7BF5AE142A79ED4BDEDC978559D762C394444527F2F797AECC298818343A10129A4335061616262636364646565666667676868044A6F75722D7365637265743544533130313818445231303240" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-08.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-08.json new file mode 100644 index 0000000..057497f --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-08.json @@ -0,0 +1,45 @@ +{ + "title":"HKDF-HMAC-SHA-256-08: Direct HKDF HMAC-SHA-256 - U other + v other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-256" + }, + "unprotected":{ + "kid":"our-secret", + "apu_other":"S-other", + "apv_other":"R-other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"482252A30EAA7DFE47CB04DA2A9FA452", + "recipients":[ + { + "Context_hex":"840A83F6F647532D6F7468657283F6F647522D6F7468657282188043A10129" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'29A84BB9DC7F2E130DE1BB5E5A9240DE247D263A02735B336DA27ECD', [[h'A10129', {-23: h'532D6F74686572', 4: h'6F75722D736563726574', -26: h'522D6F74686572'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C29A84BB9DC7F2E130DE1BB5E5A9240DE247D263A02735B336DA27ECD818343A10129A33647532D6F74686572044A6F75722D736563726574381947522D6F7468657240" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-09.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-09.json new file mode 100644 index 0000000..738e414 --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-09.json @@ -0,0 +1,47 @@ +{ + "title":"HKDF-HMAC-SHA-256-09: Direct HKDF HMAC-SHA-256 - U id + u nonce + v id + v nonce", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-256" + }, + "unprotected":{ + "kid":"our-secret", + "apu_id":"Sender", + "apv_id":"Recipient", + "apu_nonce":"S101", + "apv_nonce":"R102" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"052B7540EEE119A13779C16AF4520012", + "recipients":[ + { + "Context_hex":"840A834653656E6465724453313031F68349526563697069656E744452313032F682188043A10129" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'E1FC8942C576DE776EEC2DCBE302743C82404AB8642A4D9193A90EC2', [[h'A10129', {-21: h'53656E646572', 4: h'6F75722D736563726574', -24: h'526563697069656E74', -22: h'53313031', -25: h'52313032'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581CE1FC8942C576DE776EEC2DCBE302743C82404AB8642A4D9193A90EC2818343A10129A5344653656E646572044A6F75722D7365637265743749526563697069656E743544533130313818445231303240" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-10.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-10.json new file mode 100644 index 0000000..e4726cd --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-10.json @@ -0,0 +1,47 @@ +{ + "title":"HKDF-HMAC-SHA-256-10: Direct HKDF HMAC-SHA-256 - U id + u other + v id + v other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-256" + }, + "unprotected":{ + "kid":"our-secret", + "apu_id":"Sender", + "apv_id":"Recipient", + "apu_other":"S-other", + "apv_other":"R-other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"76432CD167EF8AB4CD778C1C6DBE4A3E", + "recipients":[ + { + "Context_hex":"840A834653656E646572F647532D6F746865728349526563697069656E74F647522D6F7468657282188043A10129" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'693A42189916B38DDCB5B6F5CF65E4E39D1AFC74B7E9B5E7B0B997EF', [[h'A10129', {-21: h'53656E646572', 4: h'6F75722D736563726574', -24: h'526563697069656E74', -23: h'532D6F74686572', -26: h'522D6F74686572'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C693A42189916B38DDCB5B6F5CF65E4E39D1AFC74B7E9B5E7B0B997EF818343A10129A5344653656E646572044A6F75722D7365637265743749526563697069656E743647532D6F74686572381947522D6F7468657240" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-11.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-11.json new file mode 100644 index 0000000..445012f --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-11.json @@ -0,0 +1,47 @@ +{ + "title":"HKDF-HMAC-SHA-256-11: Direct HKDF HMAC-SHA-256 - U nonce + u other + v nonce + v other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-256" + }, + "unprotected":{ + "kid":"our-secret", + "apu_nonce":"S101", + "apv_nonce":"R102", + "apu_other":"S-other", + "apv_other":"R-other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"AC6E66D5F2E27E0AF3C1A12CF99CA8BE", + "recipients":[ + { + "Context_hex":"840A83F6445331303147532D6F7468657283F6445231303247522D6F7468657282188043A10129" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'CF27AF6F9206CC99B34DAE74162E7F2117E2B30CF587169F3B073F5C', [[h'A10129', {-22: h'53313031', 4: h'6F75722D736563726574', -25: h'52313032', -23: h'532D6F74686572', -26: h'522D6F74686572'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581CCF27AF6F9206CC99B34DAE74162E7F2117E2B30CF587169F3B073F5C818343A10129A5354453313031044A6F75722D736563726574381844523130323647532D6F74686572381947522D6F7468657240" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-12.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-12.json new file mode 100644 index 0000000..f2799e1 --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-12.json @@ -0,0 +1,49 @@ +{ + "title":"HKDF-HMAC-SHA-256-12: Direct HKDF HMAC-SHA-256 - u id + u nonce + u other + v id + v nonce v other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-256" + }, + "unprotected":{ + "kid":"our-secret", + "apu_id":"Sender", + "apv_id":"Recipient", + "apu_nonce":"S101", + "apv_nonce":"R102", + "apu_other":"S-other", + "apv_other":"R-other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"5AABF097F00D5CC523612A374A41D245", + "recipients":[ + { + "Context_hex":"840A834653656E646572445331303147532D6F746865728349526563697069656E74445231303247522D6F7468657282188043A10129" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'8D9129CCD0EEFA0526A2F71AD91E19ADF013C0454C0DAC56CDE8F31E', [[h'A10129', {-21: h'53656E646572', 4: h'6F75722D736563726574', -24: h'526563697069656E74', -22: h'53313031', -25: h'52313032', -23: h'532D6F74686572', -26: h'522D6F74686572'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C8D9129CCD0EEFA0526A2F71AD91E19ADF013C0454C0DAC56CDE8F31E818343A10129A7344653656E646572044A6F75722D7365637265743749526563697069656E74354453313031381844523130323647532D6F74686572381947522D6F7468657240" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-13.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-13.json new file mode 100644 index 0000000..80af2c3 --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-13.json @@ -0,0 +1,47 @@ +{ + "title":"HKDF-HMAC-SHA-256-13: Direct HKDF HMAC-SHA-256 - U id + Pub Other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-256" + }, + "unprotected":{ + "kid":"our-secret", + "apu_id":"Sender" + }, + "unsent":{ + "pub_other":"Public Other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"A179E9040E8B10F82FE28F7AD82BD98D", + "recipients":[ + { + "Context_hex":"840A834653656E646572F6F683F6F6F683188043A101294C5075626C6963204F74686572" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'21331CC990421BAE71871E7B1A9C760E62C8B09C66DB6F3298D94B21', [[h'A10129', {-21: h'53656E646572', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C21331CC990421BAE71871E7B1A9C760E62C8B09C66DB6F3298D94B21818343A10129A2344653656E646572044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-14.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-14.json new file mode 100644 index 0000000..381611f --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-256-14.json @@ -0,0 +1,46 @@ +{ + "title":"HKDF-HMAC-SHA-256-14: Direct HKDF HMAC-SHA-256 - Priv Other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-256" + }, + "unprotected":{ + "kid":"our-secret" + }, + "unsent":{ + "priv_other":"Private Other Data" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"F71FA1EEEC1B3126147A079C39A63CC3", + "recipients":[ + { + "Context_hex":"850A83F6F6F683F6F6F682188043A101295250726976617465204F746865722044617461" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'F5CB7489E7F933D1444438D671633D2A4DB756BB5930385B53508700', [[h'A10129', {4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581CF5CB7489E7F933D1444438D671633D2A4DB756BB5930385B53508700818343A10129A1044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-01.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-01.json new file mode 100644 index 0000000..51493d0 --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-01.json @@ -0,0 +1,44 @@ +{ + "title":"HKDF-HMAC-SHA-512-01: Direct HKDF HMAC-SHA-512 - with salt", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-512" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"C734655EAD210D8354018308986BD01D", + "recipients":[ + { + "Context_hex":"840A83F6F6F683F6F6F682188043A1012A" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'97B849AA156A3C7FE2BEDB813E03CC769EAD876A45B05778B3ACF2C1', [[h'A1012A', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C97B849AA156A3C7FE2BEDB813E03CC769EAD876A45B05778B3ACF2C1818343A1012AA2335061616262636364646565666667676868044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-02.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-02.json new file mode 100644 index 0000000..e9a9cb7 --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-02.json @@ -0,0 +1,44 @@ +{ + "title":"HKDF-HMAC-SHA-512-02: Direct HKDF HMAC-SHA-512 - with salt", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-256/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-512" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010B40", + "CEK_hex":"6498FBB4FBD6556C880A5832C759312A1B0D8D079CEA91B2DA3D246CACD4B10D", + "recipients":[ + { + "Context_hex":"840B83F6F6F683F6F6F68219010043A1012A" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010B', {5: h'BFE89563EE070CE187BDF1C472'}, h'0EECA76865429484BA6D6916E900BABCC47982549D706B67F1EE71D1', [[h'A1012A', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010BA1054DBFE89563EE070CE187BDF1C472581C0EECA76865429484BA6D6916E900BABCC47982549D706B67F1EE71D1818343A1012AA2335061616262636364646565666667676868044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-03.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-03.json new file mode 100644 index 0000000..d201c3a --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-03.json @@ -0,0 +1,43 @@ +{ + "title":"HKDF-HMAC-SHA-512-03: Direct HKDF HMAC-SHA-512 - with salt", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-512" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh" + } + } + ] + } + }, + "intermediates":{ + "AAD_hex":"8369456E76656C6F70656443A1010A40", + "CEK_hex":"4E59ACE6806C3C2F76ED7E56D34CB5767A6422F08A12CBC1E59195B82599E683", + "recipients":[ + { + "Context_hex":"840583F6F6F683F6F6F68219010043A1012A" + } + ], + "ToMac_hex":"84634D414343A101054054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'E248C0CC50FAAF759CDA500035245D160B74A96A20234B764706D8E7911C96FD', [[h'A1012A', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A10105A054546869732069732074686520636F6E74656E742E5820E248C0CC50FAAF759CDA500035245D160B74A96A20234B764706D8E7911C96FD818343A1012AA2335061616262636364646565666667676868044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-04.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-04.json new file mode 100644 index 0000000..bb84a1c --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-04.json @@ -0,0 +1,43 @@ +{ + "title":"HKDF-HMAC-SHA-512-04: Direct HKDF HMAC-SHA-512 - salt ", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-512" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh" + } + } + ] + } + }, + "intermediates":{ + "AAD_hex":"8369456E76656C6F70656443A1010A40", + "CEK_hex":"4D59CB13FFE2C6A44916F23E72D8FA990FF6143C29762F156225F56598ACD153A38761B826C717DFFC2407AEFAD0939925C4B975D81ADCB8AE1D8557E2D2989F", + "recipients":[ + { + "Context_hex":"840783F6F6F683F6F6F68219020043A1012A" + } + ], + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'391518189364FE41270F2C05931103AF448901E21B1BFA5816E54E57A828C192C226AF60617AC9D51B9756F2231CC3CBB9D72A2BD6BECFCDB0B90E4C05CC3F2A', [[h'A1012A', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E5840391518189364FE41270F2C05931103AF448901E21B1BFA5816E54E57A828C192C226AF60617AC9D51B9756F2231CC3CBB9D72A2BD6BECFCDB0B90E4C05CC3F2A818343A1012AA2335061616262636364646565666667676868044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-05.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-05.json new file mode 100644 index 0000000..fc0fd93 --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-05.json @@ -0,0 +1,46 @@ +{ + "title":"HKDF-HMAC-SHA-512-05: Direct HKDF HMAC-SHA-512 - salt + U id + v id", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-512" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh", + "apu_id":"Sender", + "apv_id":"Recipient" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"CF606F6632C125D1FC3B4ED2D866F068", + "recipients":[ + { + "Context_hex":"840A834653656E646572F6F68349526563697069656E74F6F682188043A1012A" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'0D70785FF421D68EB3A6D9B22D4C24B0A5617A3AD01D4F31DE108329', [[h'A1012A', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574', -21: h'53656E646572', -24: h'526563697069656E74'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C0D70785FF421D68EB3A6D9B22D4C24B0A5617A3AD01D4F31DE108329818343A1012AA4335061616262636364646565666667676868044A6F75722D736563726574344653656E6465723749526563697069656E7440" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-06.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-06.json new file mode 100644 index 0000000..03ed1ed --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-06.json @@ -0,0 +1,46 @@ +{ + "title":"HKDF-HMAC-SHA-512-06: Direct HKDF HMAC-SHA-512 - salt + u nonce + v nonce", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-512" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh", + "apu_nonce":"S101", + "apv_nonce":"R102" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"44903D22776B785429D9BEF435B161AD", + "recipients":[ + { + "Context_hex":"840A83F64453313031F683F64452313032F682188043A1012A" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'052ABDCC369C4EA59418DB1B35FB739A971FE6D17EC517404B0932C4', [[h'A1012A', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574', -22: h'53313031', -25: h'52313032'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C052ABDCC369C4EA59418DB1B35FB739A971FE6D17EC517404B0932C4818343A1012AA4335061616262636364646565666667676868044A6F75722D7365637265743544533130313818445231303240" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-07.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-07.json new file mode 100644 index 0000000..aa5b959 --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-07.json @@ -0,0 +1,46 @@ +{ + "title":"HKDF-HMAC-SHA-512-07: Direct HKDF HMAC-SHA-512 - salt + u nonce + v nonce", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-512" + }, + "unprotected":{ + "kid":"our-secret", + "salt":"aabbccddeeffgghh", + "apu_nonce":"S101", + "apv_nonce":"R102" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"44903D22776B785429D9BEF435B161AD", + "recipients":[ + { + "Context_hex":"840A83F64453313031F683F64452313032F682188043A1012A" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'052ABDCC369C4EA59418DB1B35FB739A971FE6D17EC517404B0932C4', [[h'A1012A', {-20: h'61616262636364646565666667676868', 4: h'6F75722D736563726574', -22: h'53313031', -25: h'52313032'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C052ABDCC369C4EA59418DB1B35FB739A971FE6D17EC517404B0932C4818343A1012AA4335061616262636364646565666667676868044A6F75722D7365637265743544533130313818445231303240" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-08.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-08.json new file mode 100644 index 0000000..7b7ef34 --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-08.json @@ -0,0 +1,45 @@ +{ + "title":"HKDF-HMAC-SHA-512-08: Direct HKDF HMAC-SHA-512 - U other + v other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-512" + }, + "unprotected":{ + "kid":"our-secret", + "apu_other":"S-other", + "apv_other":"R-other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"6531DE4031EC93E9E7DF6A2E9FB20975", + "recipients":[ + { + "Context_hex":"840A83F6F647532D6F7468657283F6F647522D6F7468657282188043A1012A" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'5B6C491745F0F78C02706828195BAFE5124C3FF2E748FC7E04B98B87', [[h'A1012A', {-23: h'532D6F74686572', 4: h'6F75722D736563726574', -26: h'522D6F74686572'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C5B6C491745F0F78C02706828195BAFE5124C3FF2E748FC7E04B98B87818343A1012AA33647532D6F74686572044A6F75722D736563726574381947522D6F7468657240" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-09.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-09.json new file mode 100644 index 0000000..16bb94e --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-09.json @@ -0,0 +1,47 @@ +{ + "title":"HKDF-HMAC-SHA-512-09: Direct HKDF HMAC-SHA-512 - U id + u nonce + v id + v nonce", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-512" + }, + "unprotected":{ + "kid":"our-secret", + "apu_id":"Sender", + "apv_id":"Recipient", + "apu_nonce":"S101", + "apv_nonce":"R102" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"25D8245E3BFEFC51324859EA14C68C23", + "recipients":[ + { + "Context_hex":"840A834653656E6465724453313031F68349526563697069656E744452313032F682188043A1012A" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'DF9D8A2E30420AEABB1FFF3A2CFFCB6350921B810F1AA0134EEE27FE', [[h'A1012A', {-21: h'53656E646572', 4: h'6F75722D736563726574', -24: h'526563697069656E74', -22: h'53313031', -25: h'52313032'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581CDF9D8A2E30420AEABB1FFF3A2CFFCB6350921B810F1AA0134EEE27FE818343A1012AA5344653656E646572044A6F75722D7365637265743749526563697069656E743544533130313818445231303240" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-10.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-10.json new file mode 100644 index 0000000..22bd3fb --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-10.json @@ -0,0 +1,47 @@ +{ + "title":"HKDF-HMAC-SHA-512-10: Direct HKDF HMAC-SHA-512 - U id + u other + v id + v other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-512" + }, + "unprotected":{ + "kid":"our-secret", + "apu_id":"Sender", + "apv_id":"Recipient", + "apu_other":"S-other", + "apv_other":"R-other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"880F5D402F99A7C3FE29BD665A1AAB84", + "recipients":[ + { + "Context_hex":"840A834653656E646572F647532D6F746865728349526563697069656E74F647522D6F7468657282188043A1012A" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'D0050523271621FB792EF7DEA199BF7D62EBD484C96155CE992ADDC0', [[h'A1012A', {-21: h'53656E646572', 4: h'6F75722D736563726574', -24: h'526563697069656E74', -23: h'532D6F74686572', -26: h'522D6F74686572'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581CD0050523271621FB792EF7DEA199BF7D62EBD484C96155CE992ADDC0818343A1012AA5344653656E646572044A6F75722D7365637265743749526563697069656E743647532D6F74686572381947522D6F7468657240" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-11.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-11.json new file mode 100644 index 0000000..257250c --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-11.json @@ -0,0 +1,47 @@ +{ + "title":"HKDF-HMAC-SHA-512-11: Direct HKDF HMAC-SHA-512 - U nonce + u other + v nonce + v other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-512" + }, + "unprotected":{ + "kid":"our-secret", + "apu_nonce":"S101", + "apv_nonce":"R102", + "apu_other":"S-other", + "apv_other":"R-other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"A1163A42C6BC774EAAE1272C17E016AA", + "recipients":[ + { + "Context_hex":"840A83F6445331303147532D6F7468657283F6445231303247522D6F7468657282188043A1012A" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'79FFAE108F68449FCA0CF291D6C1770A3C8CC312855D19642304EBCD', [[h'A1012A', {-22: h'53313031', 4: h'6F75722D736563726574', -25: h'52313032', -23: h'532D6F74686572', -26: h'522D6F74686572'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C79FFAE108F68449FCA0CF291D6C1770A3C8CC312855D19642304EBCD818343A1012AA5354453313031044A6F75722D736563726574381844523130323647532D6F74686572381947522D6F7468657240" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-12.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-12.json new file mode 100644 index 0000000..8ade00e --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-12.json @@ -0,0 +1,49 @@ +{ + "title":"HKDF-HMAC-SHA-512-12: Direct HKDF HMAC-SHA-512 - u id + u nonce + u other + v id + v nonce v other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-512" + }, + "unprotected":{ + "kid":"our-secret", + "apu_id":"Sender", + "apv_id":"Recipient", + "apu_nonce":"S101", + "apv_nonce":"R102", + "apu_other":"S-other", + "apv_other":"R-other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"01F08D7721A32295D95B97B1684648E4", + "recipients":[ + { + "Context_hex":"840A834653656E646572445331303147532D6F746865728349526563697069656E74445231303247522D6F7468657282188043A1012A" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'D7751DCCE7FF4E13EDE04486975481978F3E3145D762A250640159B0', [[h'A1012A', {-21: h'53656E646572', 4: h'6F75722D736563726574', -24: h'526563697069656E74', -22: h'53313031', -25: h'52313032', -23: h'532D6F74686572', -26: h'522D6F74686572'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581CD7751DCCE7FF4E13EDE04486975481978F3E3145D762A250640159B0818343A1012AA7344653656E646572044A6F75722D7365637265743749526563697069656E74354453313031381844523130323647532D6F74686572381947522D6F7468657240" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-13.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-13.json new file mode 100644 index 0000000..0fb2607 --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-13.json @@ -0,0 +1,47 @@ +{ + "title":"HKDF-HMAC-SHA-512-13: Direct HKDF HMAC-SHA-512 - U id + Pub Other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-512" + }, + "unprotected":{ + "kid":"our-secret", + "apu_id":"Sender" + }, + "unsent":{ + "pub_other":"Public Other" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"B84F8DF2E9108C34CC5FC8C85258B165", + "recipients":[ + { + "Context_hex":"840A834653656E646572F6F683F6F6F683188043A1012A4C5075626C6963204F74686572" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'90F652D7E399AE8E8734541E081203EDB8D24ED161787AE85C14D443', [[h'A1012A', {-21: h'53656E646572', 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581C90F652D7E399AE8E8734541E081203EDB8D24ED161787AE85C14D443818343A1012AA2344653656E646572044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-14.json b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-14.json new file mode 100644 index 0000000..275acd8 --- /dev/null +++ b/src/test/resources/Examples/hkdf-hmac-sha-examples/hmac-sha-512-14.json @@ -0,0 +1,46 @@ +{ + "title":"HKDF-HMAC-SHA-512-14: Direct HKDF HMAC-SHA-512 - Priv Other", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"AES-CCM-16-128/64" + }, + "recipients":[ + { + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + }, + "protected":{ + "alg":"HKDF-HMAC-SHA-512" + }, + "unprotected":{ + "kid":"our-secret" + }, + "unsent":{ + "priv_other":"Private Other Data" + } + } + ] + }, + "rng_stream":[ + "BFE89563EE070CE187BDF1C472" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010A40", + "CEK_hex":"F2B05785DD39DA78A3FDAFF45A2BEBBC", + "recipients":[ + { + "Context_hex":"850A83F6F6F683F6F6F682188043A1012A5250726976617465204F746865722044617461" + } + ] + }, + "output":{ + "cbor_diag":"96([h'A1010A', {5: h'BFE89563EE070CE187BDF1C472'}, h'A6A8C745350E75285AC4AF50B5742D56D930E1ADC5406233BD11FE27', [[h'A1012A', {4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8608443A1010AA1054DBFE89563EE070CE187BDF1C472581CA6A8C745350E75285AC4AF50B5742D56D930E1ADC5406233BD11FE27818343A1012AA1044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hmac-examples/HMac-01.json b/src/test/resources/Examples/hmac-examples/HMac-01.json new file mode 100644 index 0000000..7fd6585 --- /dev/null +++ b/src/test/resources/Examples/hmac-examples/HMac-01.json @@ -0,0 +1,38 @@ +{ + "title":"HMAC-01: Direct key + HMAC-SHA256", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'2BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A10105A054546869732069732074686520636F6E74656E742E58202BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hmac-examples/HMac-02.json b/src/test/resources/Examples/hmac-examples/HMac-02.json new file mode 100644 index 0000000..8a217b4 --- /dev/null +++ b/src/test/resources/Examples/hmac-examples/HMac-02.json @@ -0,0 +1,38 @@ +{ + "title":"HMAC-02: Direct key + HMAC-SHA384", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS384", + "protected":{ + "alg":"HS384" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"sec-48" + }, + "key":{ + "kty":"oct", + "kid":"sec-48", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYgAESIzd4iZqiEiIyQlJico" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A101064054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C42718800112233778899AA2122232425262728", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A10106', {}, h'546869732069732074686520636F6E74656E742E', h'B3097F70009A11507409598A83E15BBBBF1982DCE28E5AB6D5A6AFF6897BD24BB8B7479622C9401B24090D458206D587', [[h'', {1: -6, 4: h'7365632D3438'}, h'']]])", + "cbor":"D8618543A10106A054546869732069732074686520636F6E74656E742E5830B3097F70009A11507409598A83E15BBBBF1982DCE28E5AB6D5A6AFF6897BD24BB8B7479622C9401B24090D458206D587818340A2012504467365632D343840" + } +} diff --git a/src/test/resources/Examples/hmac-examples/HMac-03.json b/src/test/resources/Examples/hmac-examples/HMac-03.json new file mode 100644 index 0000000..b81dfe0 --- /dev/null +++ b/src/test/resources/Examples/hmac-examples/HMac-03.json @@ -0,0 +1,38 @@ +{ + "title":"HMAC-03: Direct key + HMAC-SHA512", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"sec-64" + }, + "key":{ + "kty":"oct", + "kid":"sec-64", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYgAESIzd4iZqiEiIyQlJicoqrvM3e7_paanqKmgsbKztA" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A101074054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C42718800112233778899AA2122232425262728AABBCCDDEEFFA5A6A7A8A9A0B1B2B3B4", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'CD28A6B3CFBBBF214851B906E050056CB438A8B88905B8B7461977022711A9D8AC5DBC54E29A56D926046B40FC2607C25B344454AA5F68DE09A3E525D3865A05', [[h'', {1: -6, 4: h'7365632D3634'}, h'']]])", + "cbor":"D8618543A10107A054546869732069732074686520636F6E74656E742E5840CD28A6B3CFBBBF214851B906E050056CB438A8B88905B8B7461977022711A9D8AC5DBC54E29A56D926046B40FC2607C25B344454AA5F68DE09A3E525D3865A05818340A2012504467365632D363440" + } +} diff --git a/src/test/resources/Examples/hmac-examples/HMac-04.json b/src/test/resources/Examples/hmac-examples/HMac-04.json new file mode 100644 index 0000000..cce5c4d --- /dev/null +++ b/src/test/resources/Examples/hmac-examples/HMac-04.json @@ -0,0 +1,42 @@ +{ + "title":"HMAC-04: Direct key + HMAC-SHA256 - Incorrect Tag ", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "ChangeTag":1 + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'2BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F7', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A10105A054546869732069732074686520636F6E74656E742E58202BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F7818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hmac-examples/HMac-05.json b/src/test/resources/Examples/hmac-examples/HMac-05.json new file mode 100644 index 0000000..c0c7a24 --- /dev/null +++ b/src/test/resources/Examples/hmac-examples/HMac-05.json @@ -0,0 +1,38 @@ +{ + "title":"HMAC-05: Direct key + HMAC-SHA256/64", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256/64", + "protected":{ + "alg":"HS256/64" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A101044054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A10104', {}, h'546869732069732074686520636F6E74656E742E', h'6F35CAB779F77833', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A10104A054546869732069732074686520636F6E74656E742E486F35CAB779F77833818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/hmac-examples/HMac-enc-01.json b/src/test/resources/Examples/hmac-examples/HMac-enc-01.json new file mode 100644 index 0000000..d0a3b67 --- /dev/null +++ b/src/test/resources/Examples/hmac-examples/HMac-enc-01.json @@ -0,0 +1,38 @@ +{ + "title":"HMAC-ENC-01: Direct key + HMAC-SHA256 - implicit", + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58'])", + "cbor":"D18443A10105A054546869732069732074686520636F6E74656E742E5820A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58" + } +} diff --git a/src/test/resources/Examples/hmac-examples/HMac-enc-02.json b/src/test/resources/Examples/hmac-examples/HMac-enc-02.json new file mode 100644 index 0000000..a74e092 --- /dev/null +++ b/src/test/resources/Examples/hmac-examples/HMac-enc-02.json @@ -0,0 +1,38 @@ +{ + "title":"HMAC-ENC-02: Direct key + HMAC-SHA384 - implicit", + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS384", + "protected":{ + "alg":"HS384" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"sec-48" + }, + "key":{ + "kty":"oct", + "kid":"sec-48", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYgAESIzd4iZqiEiIyQlJico" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A101064054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C42718800112233778899AA2122232425262728", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A10106', {}, h'546869732069732074686520636F6E74656E742E', h'998D26C6459AAEECF44ED20CE00C8CCEDF0A1F3D22A92FC05DB08C5AEB1CB594CAAF5A5C5E2E9D01CCE7E77A93AA8C62'])", + "cbor":"D18443A10106A054546869732069732074686520636F6E74656E742E5830998D26C6459AAEECF44ED20CE00C8CCEDF0A1F3D22A92FC05DB08C5AEB1CB594CAAF5A5C5E2E9D01CCE7E77A93AA8C62" + } +} diff --git a/src/test/resources/Examples/hmac-examples/HMac-enc-03.json b/src/test/resources/Examples/hmac-examples/HMac-enc-03.json new file mode 100644 index 0000000..ad021c9 --- /dev/null +++ b/src/test/resources/Examples/hmac-examples/HMac-enc-03.json @@ -0,0 +1,38 @@ +{ + "title":"HMAC-ENC-03: Direct key + HMAC-SHA512 - implicit", + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS512", + "protected":{ + "alg":"HS512" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"sec-64" + }, + "key":{ + "kty":"oct", + "kid":"sec-64", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYgAESIzd4iZqiEiIyQlJicoqrvM3e7_paanqKmgsbKztA" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A101074054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C42718800112233778899AA2122232425262728AABBCCDDEEFFA5A6A7A8A9A0B1B2B3B4", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A10107', {}, h'546869732069732074686520636F6E74656E742E', h'4A555BF971F7C1891D9DDF304A1A132E2D6F817449474D813E6D04D65962BED8BBA70C17E1F5308FA39962959A4B9B8D7DA8E6D849B209DCD3E98CC0F11EDDF2'])", + "cbor":"D18443A10107A054546869732069732074686520636F6E74656E742E58404A555BF971F7C1891D9DDF304A1A132E2D6F817449474D813E6D04D65962BED8BBA70C17E1F5308FA39962959A4B9B8D7DA8E6D849B209DCD3E98CC0F11EDDF2" + } +} diff --git a/src/test/resources/Examples/hmac-examples/HMac-enc-04.json b/src/test/resources/Examples/hmac-examples/HMac-enc-04.json new file mode 100644 index 0000000..f18aedd --- /dev/null +++ b/src/test/resources/Examples/hmac-examples/HMac-enc-04.json @@ -0,0 +1,42 @@ +{ + "title":"HMAC-ENC-04: Direct key + HMAC-SHA256 - Incorrect Tag - implicit", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "ChangeTag":1 + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C59'])", + "cbor":"D18443A10105A054546869732069732074686520636F6E74656E742E5820A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C59" + } +} diff --git a/src/test/resources/Examples/hmac-examples/HMac-enc-05.json b/src/test/resources/Examples/hmac-examples/HMac-enc-05.json new file mode 100644 index 0000000..af8ac89 --- /dev/null +++ b/src/test/resources/Examples/hmac-examples/HMac-enc-05.json @@ -0,0 +1,38 @@ +{ + "title":"HMAC-ENC-05: Direct key + HMAC-SHA256/64 - implicit", + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS256/64", + "protected":{ + "alg":"HS256/64" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A101044054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A10104', {}, h'546869732069732074686520636F6E74656E742E', h'11F9E357975FB849'])", + "cbor":"D18443A10104A054546869732069732074686520636F6E74656E742E4811F9E357975FB849" + } +} diff --git a/src/test/resources/Examples/mac-tests/HMac-01.json b/src/test/resources/Examples/mac-tests/HMac-01.json new file mode 100644 index 0000000..7fd6585 --- /dev/null +++ b/src/test/resources/Examples/mac-tests/HMac-01.json @@ -0,0 +1,38 @@ +{ + "title":"HMAC-01: Direct key + HMAC-SHA256", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'2BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A10105A054546869732069732074686520636F6E74656E742E58202BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/mac-tests/mac-fail-01.json b/src/test/resources/Examples/mac-tests/mac-fail-01.json new file mode 100644 index 0000000..830a6fd --- /dev/null +++ b/src/test/resources/Examples/mac-tests/mac-fail-01.json @@ -0,0 +1,42 @@ +{ + "title":"mac-fail-01: Direct key + HMAC-SHA256", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "ChangeCBORTag":17 + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'2BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D18543A10105A054546869732069732074686520636F6E74656E742E58202BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/mac-tests/mac-fail-02.json b/src/test/resources/Examples/mac-tests/mac-fail-02.json new file mode 100644 index 0000000..4d3ee37 --- /dev/null +++ b/src/test/resources/Examples/mac-tests/mac-fail-02.json @@ -0,0 +1,42 @@ +{ + "title":"mac-fail-02: Direct key + HMAC-SHA256", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "ChangeTag":1 + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'2BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F7', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A10105A054546869732069732074686520636F6E74656E742E58202BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F7818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/mac-tests/mac-fail-03.json b/src/test/resources/Examples/mac-tests/mac-fail-03.json new file mode 100644 index 0000000..74159c7 --- /dev/null +++ b/src/test/resources/Examples/mac-tests/mac-fail-03.json @@ -0,0 +1,44 @@ +{ + "title":"mac-fail-03: Direct key + HMAC-SHA256", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "ChangeAttr":{ + "alg":-999 + } + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A1013903E6', {}, h'546869732069732074686520636F6E74656E742E', h'2BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618545A1013903E6A054546869732069732074686520636F6E74656E742E58202BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/mac-tests/mac-fail-04.json b/src/test/resources/Examples/mac-tests/mac-fail-04.json new file mode 100644 index 0000000..eea9b07 --- /dev/null +++ b/src/test/resources/Examples/mac-tests/mac-fail-04.json @@ -0,0 +1,44 @@ +{ + "title":"mac-fail-04: Direct key + HMAC-SHA256", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "ChangeAttr":{ + "alg":"Unknown" + } + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A10167556E6B6E6F776E', {}, h'546869732069732074686520636F6E74656E742E', h'2BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D861854AA10167556E6B6E6F776EA054546869732069732074686520636F6E74656E742E58202BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/mac-tests/mac-fail-06.json b/src/test/resources/Examples/mac-tests/mac-fail-06.json new file mode 100644 index 0000000..c879bd7 --- /dev/null +++ b/src/test/resources/Examples/mac-tests/mac-fail-06.json @@ -0,0 +1,44 @@ +{ + "title":"mac-fail-06: Direct key + HMAC-SHA256", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "AddProtected":{ + "ctyp":0 + } + } + }, + "intermediates":{ + "ToMac_hex":"84634D414343A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A201050300', {}, h'546869732069732074686520636F6E74656E742E', h'2BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618545A201050300A054546869732069732074686520636F6E74656E742E58202BDCC89F058216B8A208DDC6D8B54AA91F48BD63484986565105C9AD5A6682F6818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/mac-tests/mac-fail-07.json b/src/test/resources/Examples/mac-tests/mac-fail-07.json new file mode 100644 index 0000000..f33bc17 --- /dev/null +++ b/src/test/resources/Examples/mac-tests/mac-fail-07.json @@ -0,0 +1,45 @@ +{ + "title":"mac-fail-07: Direct key + HMAC-SHA256", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "protected":{ + "alg":"HS256", + "ctyp":0 + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "RemoveProtected":{ + "ctyp":0 + } + } + }, + "intermediates":{ + "ToMac_hex":"84634D414345A2010503004054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'1CB67BE501C70D20CA5C7FE26F95E3F46799ED2FB5A2E457426D818985DC1EB7', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618543A10105A054546869732069732074686520636F6E74656E742E58201CB67BE501C70D20CA5C7FE26F95E3F46799ED2FB5A2E457426D818985DC1EB7818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/mac-tests/mac-pass-01.json b/src/test/resources/Examples/mac-tests/mac-pass-01.json new file mode 100644 index 0000000..7c21318 --- /dev/null +++ b/src/test/resources/Examples/mac-tests/mac-pass-01.json @@ -0,0 +1,41 @@ +{ + "title":"mac-pass-01: Direct key + HMAC-SHA256", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "unprotected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "ChangeProtected":"a0" + } + }, + "intermediates":{ + "ToMac_hex":"84634D4143404054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'A0', {1: 5}, h'546869732069732074686520636F6E74656E742E', h'C2EBE664C1D996AA3026824BBBB7CAA454E2CC4212181AD9F34C7879CBA1972E', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618541A0A1010554546869732069732074686520636F6E74656E742E5820C2EBE664C1D996AA3026824BBBB7CAA454E2CC4212181AD9F34C7879CBA1972E818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/mac-tests/mac-pass-02.json b/src/test/resources/Examples/mac-tests/mac-pass-02.json new file mode 100644 index 0000000..527836b --- /dev/null +++ b/src/test/resources/Examples/mac-tests/mac-pass-02.json @@ -0,0 +1,39 @@ +{ + "title":"mac-pass-02: external data", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "unprotected":{ + "alg":"HS256" + }, + "external":"11aa22bb33cc44dd55006699", + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84634D4143404C11AA22BB33CC44DD5500669954546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"97([h'', {1: 5}, h'546869732069732074686520636F6E74656E742E', h'60CFE7D9C733A758E198FF758A381E43B3CAF9867AEBAEF224CA8F11FFD3AC7A', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]])", + "cbor":"D8618540A1010554546869732069732074686520636F6E74656E742E582060CFE7D9C733A758E198FF758A381E43B3CAF9867AEBAEF224CA8F11FFD3AC7A818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/mac-tests/mac-pass-03.json b/src/test/resources/Examples/mac-tests/mac-pass-03.json new file mode 100644 index 0000000..21fe739 --- /dev/null +++ b/src/test/resources/Examples/mac-tests/mac-pass-03.json @@ -0,0 +1,41 @@ +{ + "title":"mac-pass-03: remove cbor tag", + "input":{ + "plaintext":"This is the content.", + "mac":{ + "alg":"HS256", + "unprotected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "RemoveCBORTag":1 + } + }, + "intermediates":{ + "ToMac_hex":"84634D4143404054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"[h'', {1: 5}, h'546869732069732074686520636F6E74656E742E', h'C2EBE664C1D996AA3026824BBBB7CAA454E2CC4212181AD9F34C7879CBA1972E', [[h'', {1: -6, 4: h'6F75722D736563726574'}, h'']]]", + "cbor":"8540A1010554546869732069732074686520636F6E74656E742E5820C2EBE664C1D996AA3026824BBBB7CAA454E2CC4212181AD9F34C7879CBA1972E818340A20125044A6F75722D73656372657440" + } +} diff --git a/src/test/resources/Examples/mac0-tests/HMac-01.json b/src/test/resources/Examples/mac0-tests/HMac-01.json new file mode 100644 index 0000000..d6e7435 --- /dev/null +++ b/src/test/resources/Examples/mac0-tests/HMac-01.json @@ -0,0 +1,38 @@ +{ + "title":"HMAC-01: Direct key + HMAC-SHA256", + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58'])", + "cbor":"D18443A10105A054546869732069732074686520636F6E74656E742E5820A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58" + } +} diff --git a/src/test/resources/Examples/mac0-tests/mac-fail-01.json b/src/test/resources/Examples/mac0-tests/mac-fail-01.json new file mode 100644 index 0000000..7da64f5 --- /dev/null +++ b/src/test/resources/Examples/mac0-tests/mac-fail-01.json @@ -0,0 +1,42 @@ +{ + "title":"mac-fail-01: Direct key + HMAC-SHA256", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "ChangeCBORTag":992 + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"992([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58'])", + "cbor":"D903E08443A10105A054546869732069732074686520636F6E74656E742E5820A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58" + } +} diff --git a/src/test/resources/Examples/mac0-tests/mac-fail-02.json b/src/test/resources/Examples/mac0-tests/mac-fail-02.json new file mode 100644 index 0000000..b2e0492 --- /dev/null +++ b/src/test/resources/Examples/mac0-tests/mac-fail-02.json @@ -0,0 +1,42 @@ +{ + "title":"mac-fail-02: Direct key + HMAC-SHA256", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "ChangeTag":1 + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C59'])", + "cbor":"D18443A10105A054546869732069732074686520636F6E74656E742E5820A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C59" + } +} diff --git a/src/test/resources/Examples/mac0-tests/mac-fail-03.json b/src/test/resources/Examples/mac0-tests/mac-fail-03.json new file mode 100644 index 0000000..3195f35 --- /dev/null +++ b/src/test/resources/Examples/mac0-tests/mac-fail-03.json @@ -0,0 +1,44 @@ +{ + "title":"mac-fail-03: Direct key + HMAC-SHA256", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "ChangeAttr":{ + "alg":-999 + } + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A1013903E6', {}, h'546869732069732074686520636F6E74656E742E', h'A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58'])", + "cbor":"D18445A1013903E6A054546869732069732074686520636F6E74656E742E5820A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58" + } +} diff --git a/src/test/resources/Examples/mac0-tests/mac-fail-04.json b/src/test/resources/Examples/mac0-tests/mac-fail-04.json new file mode 100644 index 0000000..9c7b190 --- /dev/null +++ b/src/test/resources/Examples/mac0-tests/mac-fail-04.json @@ -0,0 +1,44 @@ +{ + "title":"mac-fail-04: Direct key + HMAC-SHA256", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "ChangeAttr":{ + "alg":"Unknown" + } + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A10167556E6B6E6F776E', {}, h'546869732069732074686520636F6E74656E742E', h'A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58'])", + "cbor":"D1844AA10167556E6B6E6F776EA054546869732069732074686520636F6E74656E742E5820A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58" + } +} diff --git a/src/test/resources/Examples/mac0-tests/mac-fail-06.json b/src/test/resources/Examples/mac0-tests/mac-fail-06.json new file mode 100644 index 0000000..9969374 --- /dev/null +++ b/src/test/resources/Examples/mac0-tests/mac-fail-06.json @@ -0,0 +1,44 @@ +{ + "title":"mac-fail-06: Direct key + HMAC-SHA256", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS256", + "protected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "AddProtected":{ + "ctyp":0 + } + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433043A101054054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A201050300', {}, h'546869732069732074686520636F6E74656E742E', h'A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58'])", + "cbor":"D18445A201050300A054546869732069732074686520636F6E74656E742E5820A1A848D3471F9D61EE49018D244C824772F223AD4F935293F1789FC3A08D8C58" + } +} diff --git a/src/test/resources/Examples/mac0-tests/mac-fail-07.json b/src/test/resources/Examples/mac0-tests/mac-fail-07.json new file mode 100644 index 0000000..2610abb --- /dev/null +++ b/src/test/resources/Examples/mac0-tests/mac-fail-07.json @@ -0,0 +1,45 @@ +{ + "title":"mac-fail-07: Direct key + HMAC-SHA256", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS256", + "protected":{ + "alg":"HS256", + "ctyp":0 + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "RemoveProtected":{ + "ctyp":0 + } + } + }, + "intermediates":{ + "ToMac_hex":"84644D41433045A2010503004054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A10105', {}, h'546869732069732074686520636F6E74656E742E', h'BB9E11EF2BD673F766A398D4E3FAD78E0F0BE2806BF73FB647471E40B3D98734'])", + "cbor":"D18443A10105A054546869732069732074686520636F6E74656E742E5820BB9E11EF2BD673F766A398D4E3FAD78E0F0BE2806BF73FB647471E40B3D98734" + } +} diff --git a/src/test/resources/Examples/mac0-tests/mac-pass-01.json b/src/test/resources/Examples/mac0-tests/mac-pass-01.json new file mode 100644 index 0000000..348ca99 --- /dev/null +++ b/src/test/resources/Examples/mac0-tests/mac-pass-01.json @@ -0,0 +1,41 @@ +{ + "title":"mac-pass-01: Direct key + HMAC-SHA256", + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS256", + "unprotected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "ChangeProtected":"a0" + } + }, + "intermediates":{ + "ToMac_hex":"84644D414330404054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'A0', {1: 5}, h'546869732069732074686520636F6E74656E742E', h'176DCE14C1E57430C13658233F41DC89AA4FA0FF9B8783F23B0EF51CA6B026BC'])", + "cbor":"D18441A0A1010554546869732069732074686520636F6E74656E742E5820176DCE14C1E57430C13658233F41DC89AA4FA0FF9B8783F23B0EF51CA6B026BC" + } +} diff --git a/src/test/resources/Examples/mac0-tests/mac-pass-02.json b/src/test/resources/Examples/mac0-tests/mac-pass-02.json new file mode 100644 index 0000000..c04b52e --- /dev/null +++ b/src/test/resources/Examples/mac0-tests/mac-pass-02.json @@ -0,0 +1,39 @@ +{ + "title":"mac-pass-02: External Data", + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS256", + "unprotected":{ + "alg":"HS256" + }, + "external":"ff00ee11dd22cc33bb44aa559966", + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + } + }, + "intermediates":{ + "ToMac_hex":"84644D414330404EFF00EE11DD22CC33BB44AA55996654546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"17([h'', {1: 5}, h'546869732069732074686520636F6E74656E742E', h'0FECAEC59BB46CC8A488AACA4B205E322DD52696B75A45768D3C302DD4BAE2F7'])", + "cbor":"D18440A1010554546869732069732074686520636F6E74656E742E58200FECAEC59BB46CC8A488AACA4B205E322DD52696B75A45768D3C302DD4BAE2F7" + } +} diff --git a/src/test/resources/Examples/mac0-tests/mac-pass-03.json b/src/test/resources/Examples/mac0-tests/mac-pass-03.json new file mode 100644 index 0000000..4b76462 --- /dev/null +++ b/src/test/resources/Examples/mac0-tests/mac-pass-03.json @@ -0,0 +1,41 @@ +{ + "title":"mac-pass-03: Remvove cbor tag", + "input":{ + "plaintext":"This is the content.", + "mac0":{ + "alg":"HS256", + "unprotected":{ + "alg":"HS256" + }, + "recipients":[ + { + "unprotected":{ + "alg":"direct", + "kid":"our-secret" + }, + "key":{ + "kty":"oct", + "kid":"our-secret", + "use":"enc", + "k":"hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg" + } + } + ] + }, + "failures":{ + "RemoveCBORTag":1 + } + }, + "intermediates":{ + "ToMac_hex":"84644D414330404054546869732069732074686520636F6E74656E742E", + "CEK_hex":"849B57219DAE48DE646D07DBB533566E976686457C1491BE3A76DCEA6C427188", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"[h'', {1: 5}, h'546869732069732074686520636F6E74656E742E', h'176DCE14C1E57430C13658233F41DC89AA4FA0FF9B8783F23B0EF51CA6B026BC']", + "cbor":"8440A1010554546869732069732074686520636F6E74656E742E5820176DCE14C1E57430C13658233F41DC89AA4FA0FF9B8783F23B0EF51CA6B026BC" + } +} diff --git a/src/test/resources/Examples/rsa-oaep-examples/ps-128gcm-01.json b/src/test/resources/Examples/rsa-oaep-examples/ps-128gcm-01.json new file mode 100644 index 0000000..48ecf89 --- /dev/null +++ b/src/test/resources/Examples/rsa-oaep-examples/ps-128gcm-01.json @@ -0,0 +1,50 @@ +{ + "title":"RSA OAEP Using SHA/1 with AES 128-GCM", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"RSA", + "n_hex":"BC7E29D0DF7E20CC9DC8D509E0F68895922AF0EF452190D402C61B554334A7BF91C9A570240F994FAE1B69035BCFAD4F7E249EB26087C2665E7C958C967B1517413DC3F97A431691A5999B257CC6CD356BAD168D929B8BAE9020750E74CF60F6FD35D6BB3FC93FC28900478694F508B33E7C00E24F90EDF37457FC3E8EFCFD2F42306301A8205AB740515331D5C18F0C64D4A43BE52FC440400F6BFC558A6E32884C2AF56F29E5C52780CEA7285F5C057FC0DFDA232D0ADA681B01495D9D0E32196633588E289E59035FF664F056189F2F10FE05827B796C326E3E748FFA7C589ED273C9C43436CDDB4A6A22523EF8BCB2221615B799966F1ABA5BC84B7A27CF", + "e_hex":"010001", + "d_hex":"0969FF04FCC1E1647C20402CF3F736D4CAE33F264C1C6EE3252CFCC77CDEF533D700570AC09A50D7646EDFB1F86A13BCABCF00BD659F27813D08843597271838BC46ED4743FE741D9BC38E0BF36D406981C7B81FCE54861CEBFB85AD23A8B4833C1BEE18C05E4E436A869636980646EECB839E4DAF434C9C6DFBF3A55CE1DB73E4902F89384BD6F9ECD3399FB1ED4B83F28D356C8E619F1F0DC96BBE8B75C1812CA58F360259EAEB1D17130C3C0A2715A99BE49898E871F6088A29570DC2FFA0CEFFFA27F1F055CBAABFD8894E0CC24F176E34EBAD32278A466F8A34A685ACC8207D9EC1FCBBD094996DC73C6305FCA31668BE57B1699D0BB456CC8871BFFBCD", + "p_hex":"F331593E147FD3A3235675F0D36A06E5426F7C5E78E49B2ACD3E268BA50E48ED2A52F3B4FA492D6BCF70EB3F915A716078A113652E3FA4C6D50AF8606C2D2C28ECAF083B712D6CEE1263C1205DA03BBBFA6F5C2D8B1A96194089CACB306C844A832E2B032B5F96A7EAB6CFE1107299013C8B0E9F089BBABBC504DD8BC138BA4B", + "q_hex":"C66B5DDCAB7017E14083F2854F61997F35636C86F2F92B172D2555588EE1ED899BA6B6ADEC0A02024B2E78A91C891256A8571E0EFB3BAC3F41724DE036EC8FA0F93E2CFBDDA59C6FF1816EB3DC938D4E45912423F3F34B7E96C39E2E4D65A3DCD6DFD2B4EF527841001272F77855B6D75D40D54BB65BD1DF8538E96EC4DAD60D", + "dP_hex":"1F677CFDBE49EF7B7EA1B8A33BB9D260229F20F1562D373864BEA4DD9D97E5A4F2B53991624CB6D7D836DDBA1CBC102E0405D0EA5CF98CFEBC1E298AD20D5749859EE8B23C604053D1FE1DBF5F37C4DEF66D10FB349E5F49AD82DDB435719DF7BD4EE5F107D5D52FA3E8AD9983B538BAE72591E2C98ACAA75ABED1192DFF7457", + "dQ_hex":"2CCC9F13ACCD9146B57755318E3BBE197FA7642090097C162E86485FC75AF173E965D9C7290D1569092A83E9C2DC9BFC5EE3D490935EE4C41F75BC698C5D1B0CC059AE746B95F1DD408CF5BEBC65C038D4F23153C0C7C4DADF1569C890870B5958568ECF755D8C73389DF1C138353A242414F853B0E7C85A0C4D4E3F4949139D", + "qi_hex":"7B6E2406FD03BC75EA22AB94A8D242506A6BBFE36BC8132DBBCE50B8425425062B697AFA180F5685E90E11EB5712D2E6E2B24E2A1E7C75D5940E08301E824470EF38561BE3E9D05F9FCA8E6F69A028A928E85E58212E789BA577B80378D7A995FA6AFEA74BE364661A679F82776C5905F43F7A35692986271E594E1D11F9668D", + "kid":"meriadoc.brandybuck@rsa.example" + }, + "protected":{ + }, + "unprotected":{ + "alg":"RSA-OAEP", + "kid":"meriadoc.brandybuck@rsa.example" + } + } + ] + }, + "rng_stream":[ + "197E03448384AF32FFA0AD47CFD8E9E6", + "D97AB3A5C72D2F0D7E5F8D5E", + "B47D3B5EFB9C5D620D28BC2DB5FBE2EA0058D6B5" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"197E03448384AF32FFA0AD47CFD8E9E6", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'D97AB3A5C72D2F0D7E5F8D5E'}, h'613C8B53A5BBCD3A79F1314C668CB9EEFD362C1A78FE58AC2F7650B9F42284DEDDF6201C', [[h'', {1: -40, 4: h'6D65726961646F632E6272616E64796275636B407273612E6578616D706C65'}, h'7994141368C5FE18D3C75C296D84B31ED1BD0B9DCDB2E9C3BBDF4A199124D03E5171E09BF90099396C346FA62D2C2E54741169FB2FCA00ABE726CE0C4F55221E7A63001D39C2026EEE8AF9D3B2E8E97084C633470E32974D65C1E046A81319F8D04316710DA060F5F1A2AD304A220B7E9B11F86B09C1689935039519F368AD6CD6E0154487E923C0DE431AEA6425774736FDEDE666F248A136B3A08F63208CEAFACDE9F61E4CFF8AC30A61A0E024B28B7B4B0F77C2547C5652F07EF761A75A4193B989FA5C35E6A9297CD6895228C8E5B2559A9B7DD997753CBAEA6848337E200FF0F8042AA58B75839F79FFEF3C3A7F4AB9DE545A7B0646DF99908F2C8A80F4']]])", + "cbor":"D8608443A10101A1054CD97AB3A5C72D2F0D7E5F8D5E5824613C8B53A5BBCD3A79F1314C668CB9EEFD362C1A78FE58AC2F7650B9F42284DEDDF6201C818340A201382704581F6D65726961646F632E6272616E64796275636B407273612E6578616D706C655901007994141368C5FE18D3C75C296D84B31ED1BD0B9DCDB2E9C3BBDF4A199124D03E5171E09BF90099396C346FA62D2C2E54741169FB2FCA00ABE726CE0C4F55221E7A63001D39C2026EEE8AF9D3B2E8E97084C633470E32974D65C1E046A81319F8D04316710DA060F5F1A2AD304A220B7E9B11F86B09C1689935039519F368AD6CD6E0154487E923C0DE431AEA6425774736FDEDE666F248A136B3A08F63208CEAFACDE9F61E4CFF8AC30A61A0E024B28B7B4B0F77C2547C5652F07EF761A75A4193B989FA5C35E6A9297CD6895228C8E5B2559A9B7DD997753CBAEA6848337E200FF0F8042AA58B75839F79FFEF3C3A7F4AB9DE545A7B0646DF99908F2C8A80F4" + } +} diff --git a/src/test/resources/Examples/rsa-oaep-examples/ps256-128gcm-01.json b/src/test/resources/Examples/rsa-oaep-examples/ps256-128gcm-01.json new file mode 100644 index 0000000..8889c62 --- /dev/null +++ b/src/test/resources/Examples/rsa-oaep-examples/ps256-128gcm-01.json @@ -0,0 +1,50 @@ +{ + "title":"RSA OAEP Using SHA/256 with AES 128-GCM", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A128GCM" + }, + "recipients":[ + { + "key":{ + "kty":"RSA", + "n_hex":"BC7E29D0DF7E20CC9DC8D509E0F68895922AF0EF452190D402C61B554334A7BF91C9A570240F994FAE1B69035BCFAD4F7E249EB26087C2665E7C958C967B1517413DC3F97A431691A5999B257CC6CD356BAD168D929B8BAE9020750E74CF60F6FD35D6BB3FC93FC28900478694F508B33E7C00E24F90EDF37457FC3E8EFCFD2F42306301A8205AB740515331D5C18F0C64D4A43BE52FC440400F6BFC558A6E32884C2AF56F29E5C52780CEA7285F5C057FC0DFDA232D0ADA681B01495D9D0E32196633588E289E59035FF664F056189F2F10FE05827B796C326E3E748FFA7C589ED273C9C43436CDDB4A6A22523EF8BCB2221615B799966F1ABA5BC84B7A27CF", + "e_hex":"010001", + "d_hex":"0969FF04FCC1E1647C20402CF3F736D4CAE33F264C1C6EE3252CFCC77CDEF533D700570AC09A50D7646EDFB1F86A13BCABCF00BD659F27813D08843597271838BC46ED4743FE741D9BC38E0BF36D406981C7B81FCE54861CEBFB85AD23A8B4833C1BEE18C05E4E436A869636980646EECB839E4DAF434C9C6DFBF3A55CE1DB73E4902F89384BD6F9ECD3399FB1ED4B83F28D356C8E619F1F0DC96BBE8B75C1812CA58F360259EAEB1D17130C3C0A2715A99BE49898E871F6088A29570DC2FFA0CEFFFA27F1F055CBAABFD8894E0CC24F176E34EBAD32278A466F8A34A685ACC8207D9EC1FCBBD094996DC73C6305FCA31668BE57B1699D0BB456CC8871BFFBCD", + "p_hex":"F331593E147FD3A3235675F0D36A06E5426F7C5E78E49B2ACD3E268BA50E48ED2A52F3B4FA492D6BCF70EB3F915A716078A113652E3FA4C6D50AF8606C2D2C28ECAF083B712D6CEE1263C1205DA03BBBFA6F5C2D8B1A96194089CACB306C844A832E2B032B5F96A7EAB6CFE1107299013C8B0E9F089BBABBC504DD8BC138BA4B", + "q_hex":"C66B5DDCAB7017E14083F2854F61997F35636C86F2F92B172D2555588EE1ED899BA6B6ADEC0A02024B2E78A91C891256A8571E0EFB3BAC3F41724DE036EC8FA0F93E2CFBDDA59C6FF1816EB3DC938D4E45912423F3F34B7E96C39E2E4D65A3DCD6DFD2B4EF527841001272F77855B6D75D40D54BB65BD1DF8538E96EC4DAD60D", + "dP_hex":"1F677CFDBE49EF7B7EA1B8A33BB9D260229F20F1562D373864BEA4DD9D97E5A4F2B53991624CB6D7D836DDBA1CBC102E0405D0EA5CF98CFEBC1E298AD20D5749859EE8B23C604053D1FE1DBF5F37C4DEF66D10FB349E5F49AD82DDB435719DF7BD4EE5F107D5D52FA3E8AD9983B538BAE72591E2C98ACAA75ABED1192DFF7457", + "dQ_hex":"2CCC9F13ACCD9146B57755318E3BBE197FA7642090097C162E86485FC75AF173E965D9C7290D1569092A83E9C2DC9BFC5EE3D490935EE4C41F75BC698C5D1B0CC059AE746B95F1DD408CF5BEBC65C038D4F23153C0C7C4DADF1569C890870B5958568ECF755D8C73389DF1C138353A242414F853B0E7C85A0C4D4E3F4949139D", + "qi_hex":"7B6E2406FD03BC75EA22AB94A8D242506A6BBFE36BC8132DBBCE50B8425425062B697AFA180F5685E90E11EB5712D2E6E2B24E2A1E7C75D5940E08301E824470EF38561BE3E9D05F9FCA8E6F69A028A928E85E58212E789BA577B80378D7A995FA6AFEA74BE364661A679F82776C5905F43F7A35692986271E594E1D11F9668D", + "kid":"meriadoc.brandybuck@rsa.example" + }, + "protected":{ + }, + "unprotected":{ + "alg":"RSA-OAEP-256", + "kid":"meriadoc.brandybuck@rsa.example" + } + } + ] + }, + "rng_stream":[ + "C0FAAD384B2273296F99F784E0B89C3E", + "3345EEF78452AAA67EAF7BEF", + "C1B531C394AC86BD5FC09230E9FEAC94FE102168053D1E52D710CE2C394E63D1" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010140", + "CEK_hex":"C0FAAD384B2273296F99F784E0B89C3E", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10101', {5: h'3345EEF78452AAA67EAF7BEF'}, h'58B7F6B31FF4C2AC20AB5B2EE5B62D5BDC9A97BDF294E3F804AAD55F71D0986DFC375748', [[h'', {1: -41, 4: h'6D65726961646F632E6272616E64796275636B407273612E6578616D706C65'}, h'71D19F9646F451B7C8F7560303DC62B64F17B50215682AFFEBC79423F2A4350DBB66AAEEF21218E4778F0CF22684A0144758DA5FB662E3B5468D84FFF7519C2A894ACF9C310A3A0F62B311767C935D9D93971F854DE3FF5AE307CE8D004BA1394E14380C6FED081056DB861AF5885659354354889A6006319B33E3055A8B550829662C83D58E5A563C3A4C43FB484672C20EDC16F0A94046B38E4D943C4B4C2A73F6D2EB7C682B2E94FF5AAAFF3007EBDBFB4B6A7204203CC91C1549CE64A7D3792F2FB78B9E6BB2B966EEE060A37DCC03BC4FDAFAE590EF8DC8198C8CCAF9289624F62C79483DD629C38C74FB092F3B383B0CAD3E58C91B21EB3EBE36407808']]])", + "cbor":"D8608443A10101A1054C3345EEF78452AAA67EAF7BEF582458B7F6B31FF4C2AC20AB5B2EE5B62D5BDC9A97BDF294E3F804AAD55F71D0986DFC375748818340A201382804581F6D65726961646F632E6272616E64796275636B407273612E6578616D706C6559010071D19F9646F451B7C8F7560303DC62B64F17B50215682AFFEBC79423F2A4350DBB66AAEEF21218E4778F0CF22684A0144758DA5FB662E3B5468D84FFF7519C2A894ACF9C310A3A0F62B311767C935D9D93971F854DE3FF5AE307CE8D004BA1394E14380C6FED081056DB861AF5885659354354889A6006319B33E3055A8B550829662C83D58E5A563C3A4C43FB484672C20EDC16F0A94046B38E4D943C4B4C2A73F6D2EB7C682B2E94FF5AAAFF3007EBDBFB4B6A7204203CC91C1549CE64A7D3792F2FB78B9E6BB2B966EEE060A37DCC03BC4FDAFAE590EF8DC8198C8CCAF9289624F62C79483DD629C38C74FB092F3B383B0CAD3E58C91B21EB3EBE36407808" + } +} diff --git a/src/test/resources/Examples/rsa-oaep-examples/ps512-256gcm-01.json b/src/test/resources/Examples/rsa-oaep-examples/ps512-256gcm-01.json new file mode 100644 index 0000000..cc243f4 --- /dev/null +++ b/src/test/resources/Examples/rsa-oaep-examples/ps512-256gcm-01.json @@ -0,0 +1,50 @@ +{ + "title":"RSA OAEP Using SHA/512 with AES 256-GCM", + "input":{ + "plaintext":"This is the content.", + "enveloped":{ + "protected":{ + "alg":"A256GCM" + }, + "recipients":[ + { + "key":{ + "kty":"RSA", + "n_hex":"BC7E29D0DF7E20CC9DC8D509E0F68895922AF0EF452190D402C61B554334A7BF91C9A570240F994FAE1B69035BCFAD4F7E249EB26087C2665E7C958C967B1517413DC3F97A431691A5999B257CC6CD356BAD168D929B8BAE9020750E74CF60F6FD35D6BB3FC93FC28900478694F508B33E7C00E24F90EDF37457FC3E8EFCFD2F42306301A8205AB740515331D5C18F0C64D4A43BE52FC440400F6BFC558A6E32884C2AF56F29E5C52780CEA7285F5C057FC0DFDA232D0ADA681B01495D9D0E32196633588E289E59035FF664F056189F2F10FE05827B796C326E3E748FFA7C589ED273C9C43436CDDB4A6A22523EF8BCB2221615B799966F1ABA5BC84B7A27CF", + "e_hex":"010001", + "d_hex":"0969FF04FCC1E1647C20402CF3F736D4CAE33F264C1C6EE3252CFCC77CDEF533D700570AC09A50D7646EDFB1F86A13BCABCF00BD659F27813D08843597271838BC46ED4743FE741D9BC38E0BF36D406981C7B81FCE54861CEBFB85AD23A8B4833C1BEE18C05E4E436A869636980646EECB839E4DAF434C9C6DFBF3A55CE1DB73E4902F89384BD6F9ECD3399FB1ED4B83F28D356C8E619F1F0DC96BBE8B75C1812CA58F360259EAEB1D17130C3C0A2715A99BE49898E871F6088A29570DC2FFA0CEFFFA27F1F055CBAABFD8894E0CC24F176E34EBAD32278A466F8A34A685ACC8207D9EC1FCBBD094996DC73C6305FCA31668BE57B1699D0BB456CC8871BFFBCD", + "p_hex":"F331593E147FD3A3235675F0D36A06E5426F7C5E78E49B2ACD3E268BA50E48ED2A52F3B4FA492D6BCF70EB3F915A716078A113652E3FA4C6D50AF8606C2D2C28ECAF083B712D6CEE1263C1205DA03BBBFA6F5C2D8B1A96194089CACB306C844A832E2B032B5F96A7EAB6CFE1107299013C8B0E9F089BBABBC504DD8BC138BA4B", + "q_hex":"C66B5DDCAB7017E14083F2854F61997F35636C86F2F92B172D2555588EE1ED899BA6B6ADEC0A02024B2E78A91C891256A8571E0EFB3BAC3F41724DE036EC8FA0F93E2CFBDDA59C6FF1816EB3DC938D4E45912423F3F34B7E96C39E2E4D65A3DCD6DFD2B4EF527841001272F77855B6D75D40D54BB65BD1DF8538E96EC4DAD60D", + "dP_hex":"1F677CFDBE49EF7B7EA1B8A33BB9D260229F20F1562D373864BEA4DD9D97E5A4F2B53991624CB6D7D836DDBA1CBC102E0405D0EA5CF98CFEBC1E298AD20D5749859EE8B23C604053D1FE1DBF5F37C4DEF66D10FB349E5F49AD82DDB435719DF7BD4EE5F107D5D52FA3E8AD9983B538BAE72591E2C98ACAA75ABED1192DFF7457", + "dQ_hex":"2CCC9F13ACCD9146B57755318E3BBE197FA7642090097C162E86485FC75AF173E965D9C7290D1569092A83E9C2DC9BFC5EE3D490935EE4C41F75BC698C5D1B0CC059AE746B95F1DD408CF5BEBC65C038D4F23153C0C7C4DADF1569C890870B5958568ECF755D8C73389DF1C138353A242414F853B0E7C85A0C4D4E3F4949139D", + "qi_hex":"7B6E2406FD03BC75EA22AB94A8D242506A6BBFE36BC8132DBBCE50B8425425062B697AFA180F5685E90E11EB5712D2E6E2B24E2A1E7C75D5940E08301E824470EF38561BE3E9D05F9FCA8E6F69A028A928E85E58212E789BA577B80378D7A995FA6AFEA74BE364661A679F82776C5905F43F7A35692986271E594E1D11F9668D", + "kid":"meriadoc.brandybuck@rsa.example" + }, + "protected":{ + }, + "unprotected":{ + "alg":"RSA-OAEP-512", + "kid":"meriadoc.brandybuck@rsa.example" + } + } + ] + }, + "rng_stream":[ + "273A25679AEC424FCE5BF748903812B3FA5474E621B94AA429250DBF8B0E8F88", + "769C56F939ADAEFCFA9AAD2F", + "4D803C767DBB373C02A125DBB22FC920DD97946F556B6B50DCAD25BB560A9A028547F40D68261550B0D785D719AD2D99DBBBAF55DF92B637478F8BCD9D98600D" + ] + }, + "intermediates":{ + "AAD_hex":"8367456E637279707443A1010340", + "CEK_hex":"273A25679AEC424FCE5BF748903812B3FA5474E621B94AA429250DBF8B0E8F88", + "recipients":[ + { + } + ] + }, + "output":{ + "cbor_diag":"96([h'A10103', {5: h'769C56F939ADAEFCFA9AAD2F'}, h'800DC70E6406E03E7FCCA3A5F40FDAB565093D89FD41B5FBD401BE9E7D45732AA2719E17', [[h'', {1: -42, 4: h'6D65726961646F632E6272616E64796275636B407273612E6578616D706C65'}, h'72D8DA91014D055908703CADF1D9813714B365E899788A774AABE8233FB21F44DF183BEF48DE5B4C731FCD981D124E3640B042A4F6248FEA04BDD1BBE63DE2CB4351D333A528E6ACC831FC08AF93DB15069B9D9C6E9E63282DC0E74D0A4D662C762BE0EF29A597394D23032BF2F0D49A9DC15A13DB0E672BEBA1E1D92966CBFD964F1FE813EE42166545339F8FB61B992271E46433F7DF991DC11800710268671A571D6497BF48D147FE114A1572E261AF7866A05C762901052DB353153AEB07C0BBA307DE7890082A980AED9D28A363512E605D58EEB8B05A80848FB1CF7B8C8447C958084D758AB82D79B4E7F81077A51AA6E3B94747FCEB4ADC44EF559699']]])", + "cbor":"D8608443A10103A1054C769C56F939ADAEFCFA9AAD2F5824800DC70E6406E03E7FCCA3A5F40FDAB565093D89FD41B5FBD401BE9E7D45732AA2719E17818340A201382904581F6D65726961646F632E6272616E64796275636B407273612E6578616D706C6559010072D8DA91014D055908703CADF1D9813714B365E899788A774AABE8233FB21F44DF183BEF48DE5B4C731FCD981D124E3640B042A4F6248FEA04BDD1BBE63DE2CB4351D333A528E6ACC831FC08AF93DB15069B9D9C6E9E63282DC0E74D0A4D662C762BE0EF29A597394D23032BF2F0D49A9DC15A13DB0E672BEBA1E1D92966CBFD964F1FE813EE42166545339F8FB61B992271E46433F7DF991DC11800710268671A571D6497BF48D147FE114A1572E261AF7866A05C762901052DB353153AEB07C0BBA307DE7890082A980AED9D28A363512E605D58EEB8B05A80848FB1CF7B8C8447C958084D758AB82D79B4E7F81077A51AA6E3B94747FCEB4ADC44EF559699" + } +} diff --git a/src/test/resources/Examples/rsa-pss-examples/rsa-pss-01.json b/src/test/resources/Examples/rsa-pss-examples/rsa-pss-01.json new file mode 100644 index 0000000..c8ebc37 --- /dev/null +++ b/src/test/resources/Examples/rsa-pss-examples/rsa-pss-01.json @@ -0,0 +1,48 @@ +{ + "title":"RSA-PSS w/ SHA-256", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "protected":{ + "ctyp":0 + }, + "signers":[ + { + "key":{ + "kty":"RSA", + "n_hex":"BC7E29D0DF7E20CC9DC8D509E0F68895922AF0EF452190D402C61B554334A7BF91C9A570240F994FAE1B69035BCFAD4F7E249EB26087C2665E7C958C967B1517413DC3F97A431691A5999B257CC6CD356BAD168D929B8BAE9020750E74CF60F6FD35D6BB3FC93FC28900478694F508B33E7C00E24F90EDF37457FC3E8EFCFD2F42306301A8205AB740515331D5C18F0C64D4A43BE52FC440400F6BFC558A6E32884C2AF56F29E5C52780CEA7285F5C057FC0DFDA232D0ADA681B01495D9D0E32196633588E289E59035FF664F056189F2F10FE05827B796C326E3E748FFA7C589ED273C9C43436CDDB4A6A22523EF8BCB2221615B799966F1ABA5BC84B7A27CF", + "e_hex":"010001", + "d_hex":"0969FF04FCC1E1647C20402CF3F736D4CAE33F264C1C6EE3252CFCC77CDEF533D700570AC09A50D7646EDFB1F86A13BCABCF00BD659F27813D08843597271838BC46ED4743FE741D9BC38E0BF36D406981C7B81FCE54861CEBFB85AD23A8B4833C1BEE18C05E4E436A869636980646EECB839E4DAF434C9C6DFBF3A55CE1DB73E4902F89384BD6F9ECD3399FB1ED4B83F28D356C8E619F1F0DC96BBE8B75C1812CA58F360259EAEB1D17130C3C0A2715A99BE49898E871F6088A29570DC2FFA0CEFFFA27F1F055CBAABFD8894E0CC24F176E34EBAD32278A466F8A34A685ACC8207D9EC1FCBBD094996DC73C6305FCA31668BE57B1699D0BB456CC8871BFFBCD", + "p_hex":"F331593E147FD3A3235675F0D36A06E5426F7C5E78E49B2ACD3E268BA50E48ED2A52F3B4FA492D6BCF70EB3F915A716078A113652E3FA4C6D50AF8606C2D2C28ECAF083B712D6CEE1263C1205DA03BBBFA6F5C2D8B1A96194089CACB306C844A832E2B032B5F96A7EAB6CFE1107299013C8B0E9F089BBABBC504DD8BC138BA4B", + "q_hex":"C66B5DDCAB7017E14083F2854F61997F35636C86F2F92B172D2555588EE1ED899BA6B6ADEC0A02024B2E78A91C891256A8571E0EFB3BAC3F41724DE036EC8FA0F93E2CFBDDA59C6FF1816EB3DC938D4E45912423F3F34B7E96C39E2E4D65A3DCD6DFD2B4EF527841001272F77855B6D75D40D54BB65BD1DF8538E96EC4DAD60D", + "dP_hex":"1F677CFDBE49EF7B7EA1B8A33BB9D260229F20F1562D373864BEA4DD9D97E5A4F2B53991624CB6D7D836DDBA1CBC102E0405D0EA5CF98CFEBC1E298AD20D5749859EE8B23C604053D1FE1DBF5F37C4DEF66D10FB349E5F49AD82DDB435719DF7BD4EE5F107D5D52FA3E8AD9983B538BAE72591E2C98ACAA75ABED1192DFF7457", + "dQ_hex":"2CCC9F13ACCD9146B57755318E3BBE197FA7642090097C162E86485FC75AF173E965D9C7290D1569092A83E9C2DC9BFC5EE3D490935EE4C41F75BC698C5D1B0CC059AE746B95F1DD408CF5BEBC65C038D4F23153C0C7C4DADF1569C890870B5958568ECF755D8C73389DF1C138353A242414F853B0E7C85A0C4D4E3F4949139D", + "qi_hex":"7B6E2406FD03BC75EA22AB94A8D242506A6BBFE36BC8132DBBCE50B8425425062B697AFA180F5685E90E11EB5712D2E6E2B24E2A1E7C75D5940E08301E824470EF38561BE3E9D05F9FCA8E6F69A028A928E85E58212E789BA577B80378D7A995FA6AFEA74BE364661A679F82776C5905F43F7A35692986271E594E1D11F9668D", + "kid":"meriadoc.brandybuck@rsa.example" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@rsa.example" + }, + "protected":{ + "alg":"RSA-PSS-256" + } + } + ] + }, + "rng_description":"seed for signature", + "rng_stream":[ + "271CFBB8B91D5D3EAE836F85E41191983AED8E3E932FF4D621D35A69539E8A52" + ] + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E617475726543A1030044A10138244054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'A10300', {}, h'546869732069732074686520636F6E74656E742E', [[h'A1013824', {4: h'6D65726961646F632E6272616E64796275636B407273612E6578616D706C65'}, h'3AD4027074989995F25E167F99C9B4096FDC5C242D438D30382AE7B30F83C88D5B5EBECB64D2256D58D3CCE5C47D343BFA532B117C2D04DF3FB20679A99CF3555A7DAE6098BD123B0F3441A1E50E897CBAA1B17CE171EBAB20AE2E10F16D6EE918D37AF102175979BE65EBCEDEB47519346EA3ED6D13B5741BC63742AE31342B10B46FE93F39B55FDD6E32128FD8B476FED88F671F304D0943D2C7A33BCE48DF08E1F890CF5ACDA3EF46DA21981C3A687CFFF85EEB276A98612F38D6EE63644859D66A9AD49939EA290F7A9FDFED9AF1246930F522CB8C6909567DCBE2729716CB18A31E6F231DB3D69A7A432AA3D6FA1DEF9C9659616BEB626F158378E0FBDD']]])", + "cbor":"D8628443A10300A054546869732069732074686520636F6E74656E742E818344A1013824A104581F6D65726961646F632E6272616E64796275636B407273612E6578616D706C655901003AD4027074989995F25E167F99C9B4096FDC5C242D438D30382AE7B30F83C88D5B5EBECB64D2256D58D3CCE5C47D343BFA532B117C2D04DF3FB20679A99CF3555A7DAE6098BD123B0F3441A1E50E897CBAA1B17CE171EBAB20AE2E10F16D6EE918D37AF102175979BE65EBCEDEB47519346EA3ED6D13B5741BC63742AE31342B10B46FE93F39B55FDD6E32128FD8B476FED88F671F304D0943D2C7A33BCE48DF08E1F890CF5ACDA3EF46DA21981C3A687CFFF85EEB276A98612F38D6EE63644859D66A9AD49939EA290F7A9FDFED9AF1246930F522CB8C6909567DCBE2729716CB18A31E6F231DB3D69A7A432AA3D6FA1DEF9C9659616BEB626F158378E0FBDD" + } +} diff --git a/src/test/resources/Examples/rsa-pss-examples/rsa-pss-02.json b/src/test/resources/Examples/rsa-pss-examples/rsa-pss-02.json new file mode 100644 index 0000000..7c0e863 --- /dev/null +++ b/src/test/resources/Examples/rsa-pss-examples/rsa-pss-02.json @@ -0,0 +1,48 @@ +{ + "title":"RSA-PSS w/ SHA-384", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "protected":{ + "ctyp":0 + }, + "signers":[ + { + "key":{ + "kty":"RSA", + "n_hex":"BC7E29D0DF7E20CC9DC8D509E0F68895922AF0EF452190D402C61B554334A7BF91C9A570240F994FAE1B69035BCFAD4F7E249EB26087C2665E7C958C967B1517413DC3F97A431691A5999B257CC6CD356BAD168D929B8BAE9020750E74CF60F6FD35D6BB3FC93FC28900478694F508B33E7C00E24F90EDF37457FC3E8EFCFD2F42306301A8205AB740515331D5C18F0C64D4A43BE52FC440400F6BFC558A6E32884C2AF56F29E5C52780CEA7285F5C057FC0DFDA232D0ADA681B01495D9D0E32196633588E289E59035FF664F056189F2F10FE05827B796C326E3E748FFA7C589ED273C9C43436CDDB4A6A22523EF8BCB2221615B799966F1ABA5BC84B7A27CF", + "e_hex":"010001", + "d_hex":"0969FF04FCC1E1647C20402CF3F736D4CAE33F264C1C6EE3252CFCC77CDEF533D700570AC09A50D7646EDFB1F86A13BCABCF00BD659F27813D08843597271838BC46ED4743FE741D9BC38E0BF36D406981C7B81FCE54861CEBFB85AD23A8B4833C1BEE18C05E4E436A869636980646EECB839E4DAF434C9C6DFBF3A55CE1DB73E4902F89384BD6F9ECD3399FB1ED4B83F28D356C8E619F1F0DC96BBE8B75C1812CA58F360259EAEB1D17130C3C0A2715A99BE49898E871F6088A29570DC2FFA0CEFFFA27F1F055CBAABFD8894E0CC24F176E34EBAD32278A466F8A34A685ACC8207D9EC1FCBBD094996DC73C6305FCA31668BE57B1699D0BB456CC8871BFFBCD", + "p_hex":"F331593E147FD3A3235675F0D36A06E5426F7C5E78E49B2ACD3E268BA50E48ED2A52F3B4FA492D6BCF70EB3F915A716078A113652E3FA4C6D50AF8606C2D2C28ECAF083B712D6CEE1263C1205DA03BBBFA6F5C2D8B1A96194089CACB306C844A832E2B032B5F96A7EAB6CFE1107299013C8B0E9F089BBABBC504DD8BC138BA4B", + "q_hex":"C66B5DDCAB7017E14083F2854F61997F35636C86F2F92B172D2555588EE1ED899BA6B6ADEC0A02024B2E78A91C891256A8571E0EFB3BAC3F41724DE036EC8FA0F93E2CFBDDA59C6FF1816EB3DC938D4E45912423F3F34B7E96C39E2E4D65A3DCD6DFD2B4EF527841001272F77855B6D75D40D54BB65BD1DF8538E96EC4DAD60D", + "dP_hex":"1F677CFDBE49EF7B7EA1B8A33BB9D260229F20F1562D373864BEA4DD9D97E5A4F2B53991624CB6D7D836DDBA1CBC102E0405D0EA5CF98CFEBC1E298AD20D5749859EE8B23C604053D1FE1DBF5F37C4DEF66D10FB349E5F49AD82DDB435719DF7BD4EE5F107D5D52FA3E8AD9983B538BAE72591E2C98ACAA75ABED1192DFF7457", + "dQ_hex":"2CCC9F13ACCD9146B57755318E3BBE197FA7642090097C162E86485FC75AF173E965D9C7290D1569092A83E9C2DC9BFC5EE3D490935EE4C41F75BC698C5D1B0CC059AE746B95F1DD408CF5BEBC65C038D4F23153C0C7C4DADF1569C890870B5958568ECF755D8C73389DF1C138353A242414F853B0E7C85A0C4D4E3F4949139D", + "qi_hex":"7B6E2406FD03BC75EA22AB94A8D242506A6BBFE36BC8132DBBCE50B8425425062B697AFA180F5685E90E11EB5712D2E6E2B24E2A1E7C75D5940E08301E824470EF38561BE3E9D05F9FCA8E6F69A028A928E85E58212E789BA577B80378D7A995FA6AFEA74BE364661A679F82776C5905F43F7A35692986271E594E1D11F9668D", + "kid":"meriadoc.brandybuck@rsa.example" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@rsa.example" + }, + "protected":{ + "alg":"RSA-PSS-384" + } + } + ] + }, + "rng_description":"seed for signature", + "rng_stream":[ + "271CFBB8B91D5D3EAE836F85E41191983AED8E3E932FF4D621D35A69539E8A527AB9B18F02FFE197F7C9A460DDC4BE57" + ] + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E617475726543A1030044A10138254054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'A10300', {}, h'546869732069732074686520636F6E74656E742E', [[h'A1013825', {4: h'6D65726961646F632E6272616E64796275636B407273612E6578616D706C65'}, h'556DA92BD3AC5C4908A94EAAEB1C5FB81B6C52C16D82C42D79375F61C3388DA5E87ABEB95530CE3BDC8979DB260C326DF13D9093D5F894C9E6D345C79AB7E64A3CF2A9A8F96CEA20FD55A3204AD5C62A4BD4128B09A34154E8E401E45A83180A82A8850ADC01BF5589F811DB189C88117157D81A145DFFB6BB0564B05CF9774FB1EE55787D2AD042EA48831090369EA32A7A4987C81D7BC70805505E41ACF62F9CB6CE585159FA146B30B2E2FC6E437841402BAEFC9B189C429C130B8F107F9DDB9FF9378CCF11E36B5179BDEFFF2DB3EE1990F8E1AD7F6631D366C8A09BE078A23124CBFC59759AAEA0FEFF48AFA5420B508DA454E9AE4516AAB64C5B346812']]])", + "cbor":"D8628443A10300A054546869732069732074686520636F6E74656E742E818344A1013825A104581F6D65726961646F632E6272616E64796275636B407273612E6578616D706C65590100556DA92BD3AC5C4908A94EAAEB1C5FB81B6C52C16D82C42D79375F61C3388DA5E87ABEB95530CE3BDC8979DB260C326DF13D9093D5F894C9E6D345C79AB7E64A3CF2A9A8F96CEA20FD55A3204AD5C62A4BD4128B09A34154E8E401E45A83180A82A8850ADC01BF5589F811DB189C88117157D81A145DFFB6BB0564B05CF9774FB1EE55787D2AD042EA48831090369EA32A7A4987C81D7BC70805505E41ACF62F9CB6CE585159FA146B30B2E2FC6E437841402BAEFC9B189C429C130B8F107F9DDB9FF9378CCF11E36B5179BDEFFF2DB3EE1990F8E1AD7F6631D366C8A09BE078A23124CBFC59759AAEA0FEFF48AFA5420B508DA454E9AE4516AAB64C5B346812" + } +} diff --git a/src/test/resources/Examples/rsa-pss-examples/rsa-pss-03.json b/src/test/resources/Examples/rsa-pss-examples/rsa-pss-03.json new file mode 100644 index 0000000..b77ae41 --- /dev/null +++ b/src/test/resources/Examples/rsa-pss-examples/rsa-pss-03.json @@ -0,0 +1,48 @@ +{ + "title":"RSA-PSS w/ SHA-512", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "protected":{ + "ctyp":0 + }, + "signers":[ + { + "key":{ + "kty":"RSA", + "n_hex":"BC7E29D0DF7E20CC9DC8D509E0F68895922AF0EF452190D402C61B554334A7BF91C9A570240F994FAE1B69035BCFAD4F7E249EB26087C2665E7C958C967B1517413DC3F97A431691A5999B257CC6CD356BAD168D929B8BAE9020750E74CF60F6FD35D6BB3FC93FC28900478694F508B33E7C00E24F90EDF37457FC3E8EFCFD2F42306301A8205AB740515331D5C18F0C64D4A43BE52FC440400F6BFC558A6E32884C2AF56F29E5C52780CEA7285F5C057FC0DFDA232D0ADA681B01495D9D0E32196633588E289E59035FF664F056189F2F10FE05827B796C326E3E748FFA7C589ED273C9C43436CDDB4A6A22523EF8BCB2221615B799966F1ABA5BC84B7A27CF", + "e_hex":"010001", + "d_hex":"0969FF04FCC1E1647C20402CF3F736D4CAE33F264C1C6EE3252CFCC77CDEF533D700570AC09A50D7646EDFB1F86A13BCABCF00BD659F27813D08843597271838BC46ED4743FE741D9BC38E0BF36D406981C7B81FCE54861CEBFB85AD23A8B4833C1BEE18C05E4E436A869636980646EECB839E4DAF434C9C6DFBF3A55CE1DB73E4902F89384BD6F9ECD3399FB1ED4B83F28D356C8E619F1F0DC96BBE8B75C1812CA58F360259EAEB1D17130C3C0A2715A99BE49898E871F6088A29570DC2FFA0CEFFFA27F1F055CBAABFD8894E0CC24F176E34EBAD32278A466F8A34A685ACC8207D9EC1FCBBD094996DC73C6305FCA31668BE57B1699D0BB456CC8871BFFBCD", + "p_hex":"F331593E147FD3A3235675F0D36A06E5426F7C5E78E49B2ACD3E268BA50E48ED2A52F3B4FA492D6BCF70EB3F915A716078A113652E3FA4C6D50AF8606C2D2C28ECAF083B712D6CEE1263C1205DA03BBBFA6F5C2D8B1A96194089CACB306C844A832E2B032B5F96A7EAB6CFE1107299013C8B0E9F089BBABBC504DD8BC138BA4B", + "q_hex":"C66B5DDCAB7017E14083F2854F61997F35636C86F2F92B172D2555588EE1ED899BA6B6ADEC0A02024B2E78A91C891256A8571E0EFB3BAC3F41724DE036EC8FA0F93E2CFBDDA59C6FF1816EB3DC938D4E45912423F3F34B7E96C39E2E4D65A3DCD6DFD2B4EF527841001272F77855B6D75D40D54BB65BD1DF8538E96EC4DAD60D", + "dP_hex":"1F677CFDBE49EF7B7EA1B8A33BB9D260229F20F1562D373864BEA4DD9D97E5A4F2B53991624CB6D7D836DDBA1CBC102E0405D0EA5CF98CFEBC1E298AD20D5749859EE8B23C604053D1FE1DBF5F37C4DEF66D10FB349E5F49AD82DDB435719DF7BD4EE5F107D5D52FA3E8AD9983B538BAE72591E2C98ACAA75ABED1192DFF7457", + "dQ_hex":"2CCC9F13ACCD9146B57755318E3BBE197FA7642090097C162E86485FC75AF173E965D9C7290D1569092A83E9C2DC9BFC5EE3D490935EE4C41F75BC698C5D1B0CC059AE746B95F1DD408CF5BEBC65C038D4F23153C0C7C4DADF1569C890870B5958568ECF755D8C73389DF1C138353A242414F853B0E7C85A0C4D4E3F4949139D", + "qi_hex":"7B6E2406FD03BC75EA22AB94A8D242506A6BBFE36BC8132DBBCE50B8425425062B697AFA180F5685E90E11EB5712D2E6E2B24E2A1E7C75D5940E08301E824470EF38561BE3E9D05F9FCA8E6F69A028A928E85E58212E789BA577B80378D7A995FA6AFEA74BE364661A679F82776C5905F43F7A35692986271E594E1D11F9668D", + "kid":"meriadoc.brandybuck@rsa.example" + }, + "unprotected":{ + "kid":"meriadoc.brandybuck@rsa.example" + }, + "protected":{ + "alg":"RSA-PSS-512" + } + } + ] + }, + "rng_description":"seed for signature", + "rng_stream":[ + "271CFBB8B91D5D3EAE836F85E41191983AED8E3E932FF4D621D35A69539E8A527AB9B18F02FFE197F7C9A460DDC4BE573F46A680F7BCD846734FAC111CCB32AA" + ] + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E617475726543A1030044A10138264054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'A10300', {}, h'546869732069732074686520636F6E74656E742E', [[h'A1013826', {4: h'6D65726961646F632E6272616E64796275636B407273612E6578616D706C65'}, h'AE12E63095413B1B30C2CD31A7A9F9E541980D66A153C7A458A688DF3D531C3F68668EDE311AF8B2443990C9C8360F7458494AE8707241EC7EEB87B6679D73C160E33622FA966C5D7D645C1321F428BB10B09EAE89E17A503D707CB4ED5506D82A1F8059E9D6ED09265FE8E3C49405B2AE98EEFF0A52E268AEC9E342EEFC1D47A3B744343821B3D34D0F976B040F9BE80D672B876AD843987DFA66F8AB117EADA8B2BCD73725B409B84F729651CEC75092E7FD7562504F49E221B80A71693BC9C5AD438A183E0ED2A3494DDD7AFAD5EAD3B87F51AE102037532379869A9D9E169B6C7ADF2D82EA22C656FFE4BF6A2A156F9DF05C53373A3B0AA815E9E5CED03D']]])", + "cbor":"D8628443A10300A054546869732069732074686520636F6E74656E742E818344A1013826A104581F6D65726961646F632E6272616E64796275636B407273612E6578616D706C65590100AE12E63095413B1B30C2CD31A7A9F9E541980D66A153C7A458A688DF3D531C3F68668EDE311AF8B2443990C9C8360F7458494AE8707241EC7EEB87B6679D73C160E33622FA966C5D7D645C1321F428BB10B09EAE89E17A503D707CB4ED5506D82A1F8059E9D6ED09265FE8E3C49405B2AE98EEFF0A52E268AEC9E342EEFC1D47A3B744343821B3D34D0F976B040F9BE80D672B876AD843987DFA66F8AB117EADA8B2BCD73725B409B84F729651CEC75092E7FD7562504F49E221B80A71693BC9C5AD438A183E0ED2A3494DDD7AFAD5EAD3B87F51AE102037532379869A9D9E169B6C7ADF2D82EA22C656FFE4BF6A2A156F9DF05C53373A3B0AA815E9E5CED03D" + } +} diff --git a/src/test/resources/Examples/sign-tests/ecdsa-01.json b/src/test/resources/Examples/sign-tests/ecdsa-01.json new file mode 100644 index 0000000..1624694 --- /dev/null +++ b/src/test/resources/Examples/sign-tests/ecdsa-01.json @@ -0,0 +1,41 @@ +{ + "title":"ECDSA-01: ECDSA - P-256", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "protected":{ + "ctyp":0 + }, + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + } + ] + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E617475726543A1030043A101264054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'A10300', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10126', {4: h'3131'}, h'D71C05DB52C9CE7F1BF5AAC01334BBEACAC1D86A2303E6EEAA89266F45C01ED602CA649EAF790D8BC99D2458457CA6A872061940E7AFBE48E289DFAC146AE258']]])", + "cbor":"D8628443A10300A054546869732069732074686520636F6E74656E742E818343A10126A1044231315840D71C05DB52C9CE7F1BF5AAC01334BBEACAC1D86A2303E6EEAA89266F45C01ED602CA649EAF790D8BC99D2458457CA6A872061940E7AFBE48E289DFAC146AE258" + } +} diff --git a/src/test/resources/Examples/sign-tests/sign-fail-01.json b/src/test/resources/Examples/sign-tests/sign-fail-01.json new file mode 100644 index 0000000..77c9279 --- /dev/null +++ b/src/test/resources/Examples/sign-tests/sign-fail-01.json @@ -0,0 +1,42 @@ +{ + "title":"sign-fail-01: Wrong CBOR Tag", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "sign":{ + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + } + ] + }, + "failures":{ + "ChangeCBORTag":998 + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E61747572654043A101264054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"998([h'', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10126', {4: h'3131'}, h'E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A']]])", + "cbor":"D903E68440A054546869732069732074686520636F6E74656E742E818343A10126A1044231315840E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A" + } +} diff --git a/src/test/resources/Examples/sign-tests/sign-fail-02.json b/src/test/resources/Examples/sign-tests/sign-fail-02.json new file mode 100644 index 0000000..aed308a --- /dev/null +++ b/src/test/resources/Examples/sign-tests/sign-fail-02.json @@ -0,0 +1,42 @@ +{ + "title":"sign-fail-02: Change signature", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "sign":{ + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + }, + "failures":{ + "ChangeTag":1 + } + } + ] + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E61747572654043A101264054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10126', {4: h'3131'}, h'E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30B']]])", + "cbor":"D8628440A054546869732069732074686520636F6E74656E742E818343A10126A1044231315840E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30B" + } +} diff --git a/src/test/resources/Examples/sign-tests/sign-fail-03.json b/src/test/resources/Examples/sign-tests/sign-fail-03.json new file mode 100644 index 0000000..49c87d4 --- /dev/null +++ b/src/test/resources/Examples/sign-tests/sign-fail-03.json @@ -0,0 +1,44 @@ +{ + "title":"sign-fail-03: Change Sign Algorithm", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "sign":{ + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + }, + "failures":{ + "ChangeAttr":{ + "alg":-999 + } + } + } + ] + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E61747572654043A101264054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'', {}, h'546869732069732074686520636F6E74656E742E', [[h'A1013903E6', {4: h'3131'}, h'E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A']]])", + "cbor":"D8628440A054546869732069732074686520636F6E74656E742E818345A1013903E6A1044231315840E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A" + } +} diff --git a/src/test/resources/Examples/sign-tests/sign-fail-04.json b/src/test/resources/Examples/sign-tests/sign-fail-04.json new file mode 100644 index 0000000..550520d --- /dev/null +++ b/src/test/resources/Examples/sign-tests/sign-fail-04.json @@ -0,0 +1,44 @@ +{ + "title":"sign-fail-04: Change Sign Algorithm", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "sign":{ + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + }, + "failures":{ + "ChangeAttr":{ + "alg":"unknown" + } + } + } + ] + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E61747572654043A101264054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10167756E6B6E6F776E', {4: h'3131'}, h'E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A']]])", + "cbor":"D8628440A054546869732069732074686520636F6E74656E742E81834AA10167756E6B6E6F776EA1044231315840E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A" + } +} diff --git a/src/test/resources/Examples/sign-tests/sign-fail-06.json b/src/test/resources/Examples/sign-tests/sign-fail-06.json new file mode 100644 index 0000000..458c897 --- /dev/null +++ b/src/test/resources/Examples/sign-tests/sign-fail-06.json @@ -0,0 +1,44 @@ +{ + "title":"sign-fail-06: Add protected attribute", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "sign":{ + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + } + ] + }, + "failures":{ + "AddProtected":{ + "ctyp":0 + } + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E61747572654043A101264054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'A10300', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10126', {4: h'3131'}, h'E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A']]])", + "cbor":"D8628443A10300A054546869732069732074686520636F6E74656E742E818343A10126A1044231315840E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A" + } +} diff --git a/src/test/resources/Examples/sign-tests/sign-fail-07.json b/src/test/resources/Examples/sign-tests/sign-fail-07.json new file mode 100644 index 0000000..db2c9f0 --- /dev/null +++ b/src/test/resources/Examples/sign-tests/sign-fail-07.json @@ -0,0 +1,47 @@ +{ + "title":"sign-fail-07: Remove protected attribute", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "sign":{ + "protected":{ + "ctyp":0 + }, + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + } + ] + }, + "failures":{ + "RemoveProtected":{ + "ctyp":0 + } + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E617475726543A1030043A101264054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'A0', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10126', {4: h'3131'}, h'D71C05DB52C9CE7F1BF5AAC01334BBEACAC1D86A2303E6EEAA89266F45C01ED602CA649EAF790D8BC99D2458457CA6A872061940E7AFBE48E289DFAC146AE258']]])", + "cbor":"D8628441A0A054546869732069732074686520636F6E74656E742E818343A10126A1044231315840D71C05DB52C9CE7F1BF5AAC01334BBEACAC1D86A2303E6EEAA89266F45C01ED602CA649EAF790D8BC99D2458457CA6A872061940E7AFBE48E289DFAC146AE258" + } +} diff --git a/src/test/resources/Examples/sign-tests/sign-pass-01.json b/src/test/resources/Examples/sign-tests/sign-pass-01.json new file mode 100644 index 0000000..c80329b --- /dev/null +++ b/src/test/resources/Examples/sign-tests/sign-pass-01.json @@ -0,0 +1,41 @@ +{ + "title":"sign-pass-01: Redo protected", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + } + ] + }, + "failures":{ + "ChangeProtected":"a0" + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E61747572654043A101264054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'A0', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10126', {4: h'3131'}, h'E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A']]])", + "cbor":"D8628441A0A054546869732069732074686520636F6E74656E742E818343A10126A1044231315840E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A" + } +} diff --git a/src/test/resources/Examples/sign-tests/sign-pass-02.json b/src/test/resources/Examples/sign-tests/sign-pass-02.json new file mode 100644 index 0000000..1d435aa --- /dev/null +++ b/src/test/resources/Examples/sign-tests/sign-pass-02.json @@ -0,0 +1,39 @@ +{ + "title":"sign-pass-02: External", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + }, + "external":"11aa22bb33cc44dd55006699" + } + ] + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E61747572654043A101264C11AA22BB33CC44DD5500669954546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"98([h'', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10126', {4: h'3131'}, h'CBB8DAD9BEAFB890E1A414124D8BFBC26BEDF2A94FCB5A882432BFF6D63E15F574EEB2AB51D83FA2CBF62672EBF4C7D993B0F4C2447647D831BA57CCA86B930A']]])", + "cbor":"D8628440A054546869732069732074686520636F6E74656E742E818343A10126A1044231315840CBB8DAD9BEAFB890E1A414124D8BFBC26BEDF2A94FCB5A882432BFF6D63E15F574EEB2AB51D83FA2CBF62672EBF4C7D993B0F4C2447647D831BA57CCA86B930A" + } +} diff --git a/src/test/resources/Examples/sign-tests/sign-pass-03.json b/src/test/resources/Examples/sign-tests/sign-pass-03.json new file mode 100644 index 0000000..f4af77c --- /dev/null +++ b/src/test/resources/Examples/sign-tests/sign-pass-03.json @@ -0,0 +1,41 @@ +{ + "title":"sign-pass-03: Remove CBOR Tag", + "input":{ + "plaintext":"This is the content.", + "sign":{ + "signers":[ + { + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + } + } + ] + }, + "failures":{ + "RemoveCBORTag":1 + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "signers":[ + { + "ToBeSign_hex":"85695369676E61747572654043A101264054546869732069732074686520636F6E74656E742E" + } + ] + }, + "output":{ + "cbor_diag":"[h'', {}, h'546869732069732074686520636F6E74656E742E', [[h'A10126', {4: h'3131'}, h'E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A']]]", + "cbor":"8440A054546869732069732074686520636F6E74656E742E818343A10126A1044231315840E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A" + } +} diff --git a/src/test/resources/Examples/sign1-tests/sign-fail-01.json b/src/test/resources/Examples/sign1-tests/sign-fail-01.json new file mode 100644 index 0000000..02eb927 --- /dev/null +++ b/src/test/resources/Examples/sign1-tests/sign-fail-01.json @@ -0,0 +1,35 @@ +{ + "title":"sign-fail-01: Wrong CBOR Tag", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + }, + "alg":"ES256" + }, + "failures":{ + "ChangeCBORTag":998 + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653143A101264054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"998([h'A10126', {4: h'3131'}, h'546869732069732074686520636F6E74656E742E', h'8EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36'])", + "cbor":"D903E68443A10126A10442313154546869732069732074686520636F6E74656E742E58408EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36" + } +} diff --git a/src/test/resources/Examples/sign1-tests/sign-fail-02.json b/src/test/resources/Examples/sign1-tests/sign-fail-02.json new file mode 100644 index 0000000..70bbf82 --- /dev/null +++ b/src/test/resources/Examples/sign1-tests/sign-fail-02.json @@ -0,0 +1,35 @@ +{ + "title":"sign-fail-02: Change signature", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + }, + "alg":"ES256" + }, + "failures":{ + "ChangeTag":1 + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653143A101264054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"18([h'A10126', {4: h'3131'}, h'546869732069732074686520636F6E74656E742F', h'8EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36'])", + "cbor":"D28443A10126A10442313154546869732069732074686520636F6E74656E742F58408EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36" + } +} diff --git a/src/test/resources/Examples/sign1-tests/sign-fail-03.json b/src/test/resources/Examples/sign1-tests/sign-fail-03.json new file mode 100644 index 0000000..6c91e61 --- /dev/null +++ b/src/test/resources/Examples/sign1-tests/sign-fail-03.json @@ -0,0 +1,37 @@ +{ + "title":"sign-fail-03: Change Sign Algorithm", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + }, + "alg":"ES256" + }, + "failures":{ + "ChangeAttr":{ + "alg":-999 + } + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653143A101264054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"18([h'A1013903E6', {4: h'3131'}, h'546869732069732074686520636F6E74656E742E', h'8EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36'])", + "cbor":"D28445A1013903E6A10442313154546869732069732074686520636F6E74656E742E58408EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36" + } +} diff --git a/src/test/resources/Examples/sign1-tests/sign-fail-04.json b/src/test/resources/Examples/sign1-tests/sign-fail-04.json new file mode 100644 index 0000000..5690b5b --- /dev/null +++ b/src/test/resources/Examples/sign1-tests/sign-fail-04.json @@ -0,0 +1,37 @@ +{ + "title":"sign-fail-04: Change Sign Algorithm", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + }, + "alg":"ES256" + }, + "failures":{ + "ChangeAttr":{ + "alg":"unknown" + } + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653143A101264054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"18([h'A10167756E6B6E6F776E', {4: h'3131'}, h'546869732069732074686520636F6E74656E742E', h'8EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36'])", + "cbor":"D2844AA10167756E6B6E6F776EA10442313154546869732069732074686520636F6E74656E742E58408EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36" + } +} diff --git a/src/test/resources/Examples/sign1-tests/sign-fail-06.json b/src/test/resources/Examples/sign1-tests/sign-fail-06.json new file mode 100644 index 0000000..bf740d3 --- /dev/null +++ b/src/test/resources/Examples/sign1-tests/sign-fail-06.json @@ -0,0 +1,37 @@ +{ + "title":"sign-fail-06: Add protected attribute", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + }, + "alg":"ES256" + }, + "failures":{ + "AddProtected":{ + "ctyp":0 + } + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653143A101264054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"18([h'A201260300', {4: h'3131'}, h'546869732069732074686520636F6E74656E742E', h'8EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36'])", + "cbor":"D28445A201260300A10442313154546869732069732074686520636F6E74656E742E58408EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36" + } +} diff --git a/src/test/resources/Examples/sign1-tests/sign-fail-07.json b/src/test/resources/Examples/sign1-tests/sign-fail-07.json new file mode 100644 index 0000000..c6eb5bb --- /dev/null +++ b/src/test/resources/Examples/sign1-tests/sign-fail-07.json @@ -0,0 +1,38 @@ +{ + "title":"sign-fail-07: Remove protected attribute", + "fail":true, + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "protected":{ + "alg":"ES256", + "ctyp":0 + }, + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "alg":"ES256" + }, + "failures":{ + "RemoveProtected":{ + "ctyp":0 + } + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653145A2012603004054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"18([h'A10126', {4: h'3131'}, h'546869732069732074686520636F6E74656E742E', h'6520BBAF2081D7E0ED0F95F76EB0733D667005F7467CEC4B87B9381A6BA1EDE8E00DF29F32A37230F39A842A54821FDD223092819D7728EFB9D3A0080B75380B'])", + "cbor":"D28443A10126A10442313154546869732069732074686520636F6E74656E742E58406520BBAF2081D7E0ED0F95F76EB0733D667005F7467CEC4B87B9381A6BA1EDE8E00DF29F32A37230F39A842A54821FDD223092819D7728EFB9D3A0080B75380B" + } +} diff --git a/src/test/resources/Examples/sign1-tests/sign-pass-01.json b/src/test/resources/Examples/sign1-tests/sign-pass-01.json new file mode 100644 index 0000000..661faf6 --- /dev/null +++ b/src/test/resources/Examples/sign1-tests/sign-pass-01.json @@ -0,0 +1,32 @@ +{ + "title":"sign-pass-01: Redo protected", + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11", + "alg":"ES256" + }, + "alg":"ES256" + }, + "failures":{ + "ChangeProtected":"a0" + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E617475726531404054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"18([h'A0', {1: -7, 4: h'3131'}, h'546869732069732074686520636F6E74656E742E', h'87DB0D2E5571843B78AC33ECB2830DF7B6E0A4D5B7376DE336B23C591C90C425317E56127FBE04370097CE347087B233BF722B64072BEB4486BDA4031D27244F'])", + "cbor":"D28441A0A201260442313154546869732069732074686520636F6E74656E742E584087DB0D2E5571843B78AC33ECB2830DF7B6E0A4D5B7376DE336B23C591C90C425317E56127FBE04370097CE347087B233BF722B64072BEB4486BDA4031D27244F" + } +} diff --git a/src/test/resources/Examples/sign1-tests/sign-pass-02.json b/src/test/resources/Examples/sign1-tests/sign-pass-02.json new file mode 100644 index 0000000..2169477 --- /dev/null +++ b/src/test/resources/Examples/sign1-tests/sign-pass-02.json @@ -0,0 +1,32 @@ +{ + "title":"sign-pass-02: External", + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + }, + "alg":"ES256", + "external":"11aa22bb33cc44dd55006699" + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653143A101264C11AA22BB33CC44DD5500669954546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"18([h'A10126', {4: h'3131'}, h'546869732069732074686520636F6E74656E742E', h'10729CD711CB3813D8D8E944A8DA7111E7B258C9BDCA6135F7AE1ADBEE9509891267837E1E33BD36C150326AE62755C6BD8E540C3E8F92D7D225E8DB72B8820B'])", + "cbor":"D28443A10126A10442313154546869732069732074686520636F6E74656E742E584010729CD711CB3813D8D8E944A8DA7111E7B258C9BDCA6135F7AE1ADBEE9509891267837E1E33BD36C150326AE62755C6BD8E540C3E8F92D7D225E8DB72B8820B" + } +} diff --git a/src/test/resources/Examples/sign1-tests/sign-pass-03.json b/src/test/resources/Examples/sign1-tests/sign-pass-03.json new file mode 100644 index 0000000..8f3153e --- /dev/null +++ b/src/test/resources/Examples/sign1-tests/sign-pass-03.json @@ -0,0 +1,34 @@ +{ + "title":"sign-pass-03: Remove CBOR Tag", + "input":{ + "plaintext":"This is the content.", + "sign0":{ + "key":{ + "kty":"EC", + "kid":"11", + "crv":"P-256", + "x":"usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", + "y":"IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", + "d":"V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM" + }, + "unprotected":{ + "kid":"11" + }, + "protected":{ + "alg":"ES256" + }, + "alg":"ES256" + }, + "failures":{ + "RemoveCBORTag":1 + }, + "rng_description":"seed for signature" + }, + "intermediates":{ + "ToBeSign_hex":"846A5369676E61747572653143A101264054546869732069732074686520636F6E74656E742E" + }, + "output":{ + "cbor_diag":"[h'A10126', {4: h'3131'}, h'546869732069732074686520636F6E74656E742E', h'8EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36']", + "cbor":"8443A10126A10442313154546869732069732074686520636F6E74656E742E58408EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36" + } +}