diff -up jss-4.2.6/mozilla/security/jss/org/mozilla/jss/pkix/crmf/EncryptedKey.java.roysjosh jss-4.2.6/mozilla/security/jss/org/mozilla/jss/pkix/crmf/EncryptedKey.java --- jss-4.2.6/mozilla/security/jss/org/mozilla/jss/pkix/crmf/EncryptedKey.java.roysjosh 2016-06-24 14:51:48.929122053 -0700 +++ jss-4.2.6/mozilla/security/jss/org/mozilla/jss/pkix/crmf/EncryptedKey.java 2016-06-24 14:52:29.487027005 -0700 @@ -127,7 +127,8 @@ public class EncryptedKey implements ASN } else { Assert._assert(type == ENVELOPED_DATA); Assert._assert(envelopedData != null); - envelopedData.encode(implicitTag, ostream); + EXPLICIT explicit = new EXPLICIT( new Tag(0), envelopedData ); + explicit.encode(tag, ostream); } } @@ -147,7 +148,9 @@ public class EncryptedKey implements ASN choicet = new CHOICE.Template(); choicet.addElement( EncryptedValue.getTemplate() ); - choicet.addElement( new Tag(0), ANY.getTemplate() ); + choicet.addElement( new EXPLICIT.Template( + new Tag(0), + ANY.getTemplate() )); } public boolean tagMatch(Tag tag) { @@ -164,7 +167,7 @@ public class EncryptedKey implements ASN return new EncryptedKey( (EncryptedValue) choice.getValue() ); } else { Assert._assert( choice.getTag().equals(new Tag(0)) ); - return new EncryptedKey( (ANY) choice.getValue() ); + return new EncryptedKey( (ANY) ((EXPLICIT) choice.getValue()).getContent() ); } } catch(InvalidBERException e) {