コード例 #1
0
  @Test
  public void testApply() {
    final Crypto crypto = createMock(Crypto.class);
    KeyPairGenerator rsaKeyPairGenerator = createMock(KeyPairGenerator.class);
    final SecureRandom secureRandom = createMock(SecureRandom.class);

    expect(crypto.rsaKeyPairGenerator()).andReturn(rsaKeyPairGenerator);
    rsaKeyPairGenerator.initialize(2048, secureRandom);
    expect(rsaKeyPairGenerator.genKeyPair()).andReturn(keyPair);

    replay(crypto, rsaKeyPairGenerator, secureRandom);

    RsaSshKeyPairGenerator supplier =
        Guice.createInjector(
                new AbstractModule() {
                  protected void configure() {
                    bind(Crypto.class).toInstance(crypto);
                    bind(SecureRandom.class).toInstance(secureRandom);
                  }
                })
            .getInstance(RsaSshKeyPairGenerator.class);

    assertEquals(
        supplier.get(),
        ImmutableMap.of(
            "public", openSshKey, "private", PRIVATE_KEY.replaceAll("\n", lineSeparator)));

    verify(crypto, rsaKeyPairGenerator, secureRandom);
  }
コード例 #2
0
 private byte[] hmacSha256(byte[] key, String s) {
   try {
     Mac hmacSHA256 = crypto.hmacSHA256(key);
     return hmacSHA256.doFinal(s.getBytes());
   } catch (Exception e) {
     throw new HttpException("Error signing request", e);
   }
 }
コード例 #3
0
ファイル: SignRequest.java プロジェクト: neotyk/jclouds
 public String signString(String toSign) {
   String signature;
   try {
     signature =
         CryptoStreams.base64(CryptoStreams.mac(InputSuppliers.of(toSign), crypto.hmacSHA1(key)));
   } catch (Exception e) {
     throw new HttpException("error signing request", e);
   }
   return signature;
 }
コード例 #4
0
  /**
   * Calculates the object MD5 and returns it as eTag
   *
   * @param object
   * @return
   */
  private String getEtag(Blob object) {
    try {
      Payloads.calculateMD5(object, crypto.md5());
    } catch (IOException ex) {
      logger.error(
          ex,
          "An error occurred calculating MD5 for object with name %s.",
          object.getMetadata().getName());
      Throwables.propagate(ex);
    }

    String eTag = CryptoStreams.hex(object.getPayload().getContentMetadata().getContentMD5());
    return eTag;
  }
コード例 #5
0
 @Override
 public X509Certificate deserialize(
     JsonElement json, Type typeOfT, JsonDeserializationContext context)
     throws JsonParseException {
   String keyText = json.getAsString().replaceAll("\\n", "\n");
   try {
     return Pems.x509Certificate(
         ByteSource.wrap(keyText.getBytes(Charsets.UTF_8)), crypto.certFactory());
   } catch (UnsupportedEncodingException e) {
     Throwables.propagate(e);
     return null;
   } catch (IOException e) {
     Throwables.propagate(e);
     return null;
   } catch (CertificateException e) {
     Throwables.propagate(e);
     return null;
   }
 }
コード例 #6
0
 @Override
 public PublicKey deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
     throws JsonParseException {
   String keyText = json.getAsString().replaceAll("\\n", "\n");
   try {
     return crypto
         .rsaKeyFactory()
         .generatePublic(Pems.publicKeySpec(ByteSource.wrap(keyText.getBytes(Charsets.UTF_8))));
   } catch (UnsupportedEncodingException e) {
     Throwables.propagate(e);
     return null;
   } catch (InvalidKeySpecException e) {
     Throwables.propagate(e);
     return null;
   } catch (IOException e) {
     Throwables.propagate(e);
     return null;
   }
 }